8

Excelでは、あるセルから別のシートの別のセルにテキストをコピーしようとしています。ソースセルには、フォーマットされたテキスト(太字、下線付き、異なる色)が含まれています。しかし、VBAを使用してテキストを他のセルにコピーすると、書式設定が失われます。

Excelがテキスト値のみをコピーしているためです。セルから(プレーンテキストではなく)HTMLテキスト を読み取る方法はありますか?

私はこれをグーグルで検索しましたが、何の回答も得られませんでした。コピーアンドペーストの方法を使用すれば、フォーマットをコピーできることを私は知っています。例えば

Range("F10").Select
Selection.Copy
Range("I10").Select
ActiveSheet.Paste

ただし、宛先は結合されたセルであり、ソースセルと同じサイズではないため、コピーアンドペーストせずに実行したいと思います。これを行うためにExcelVBAで利用可能なオプションはありますか?

編集:私は次のコードでそれを解決することができました。

Range("I11").Value = Range("I10").Value
For i = 1 To Range("I10").Characters.Count
    Range("I11").Characters(i, 1).Font.Bold = Range("I10").Characters(i, 1).Font.Bold
    Range("I11").Characters(i, 1).Font.Color = Range("I10").Characters(i, 1).Font.Color
    Range("I11").Characters(i, 1).Font.Italic = Range("I10").Characters(i, 1).Font.Italic
    Range("I11").Characters(i, 1).Font.Underline = Range("I10").Characters(i, 1).Font.Underline
    Range("I11").Characters(i, 1).Font.FontStyle = Range("I10").Characters(i, 1).Font.FontStyle
Next i
4

5 に答える 5

9

Excel 2010を使用していますか?試す

Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
于 2012-08-07T15:43:51.500 に答える
5

フォーマットをコピーするには:

Range("F10").Select
Selection.Copy
Range("I10:J10").Select ' note that we select the whole merged cell
Selection.PasteSpecial Paste:=xlPasteFormats

フォーマットをコピーすると、結合されたセルが壊れるので、これを使用してセルを元に戻すことができます

Range("I10:J10").Select
Selection.Merge

他に何もコピーせずに(コピー/貼り付けを使用せずに)セル値をコピーするには、セルを直接アドレス指定できます

Range("I10").Value = Range("F10").Value

他のプロパティ(フォント、色など)も、同じ方法で範囲オブジェクトのプロパティを直接アドレス指定することでコピーできます。

于 2012-08-07T15:41:58.480 に答える
3

selectの使用は避けたい

     With sheets("sheetname").range("I10") 
          .PasteSpecial Paste:=xlPasteValues, _
                  Operation:=xlNone, _
                  SkipBlanks:=False, _
                  Transpose:=False
          .PasteSpecial Paste:=xlPasteFormats, _
                  Operation:=xlNone, _
                  SkipBlanks:=False, _
                  Transpose:=False
          .font.color = sheets("sheetname").range("F10").font.color
      End With
      sheets("sheetname").range("I10:J10").merge
于 2012-08-07T16:09:08.160 に答える
1
Sub CopyValueWithFormatting()
    Sheet1.Range("A1").Copy
    With Sheet2.Range("B1")
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteValues
    End With
End Sub
于 2017-09-04T12:03:33.073 に答える
0

Excelで太字のテキストをあるシートから別のシートにコピーするVBScriptを使用して 'インスタンスオブジェクトを作成

Set oXL = CreateObject("Excel.application")
oXL.Visible = True

Set oWB = oXL.Workbooks.Open("FilePath.xlsx")
Set oSheet = oWB.Worksheets("Sheet1")         'Source Sheet in workbook
Set oDestSheet = oWB.Worksheets("Sheet2")       'Destination sheet in workbook

r = oSheet.usedrange.rows.Count
c = oSheet.usedrange.columns.Count

For i = 1 To r
    For j = 1 To c
        If oSheet.Cells(i,j).font.Bold = True Then

            oSheet.cells(i,j).copy
            oDestSheet.Cells(i,j).pastespecial
        End If
    Next
Next

oWB.Close
oXL.Quit
于 2017-11-24T08:44:54.497 に答える