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
フォーマットをコピーするには:
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
他のプロパティ(font、color、 etc )も、範囲オブジェクトのプロパティを同じ方法で直接アドレス指定することでコピーできます。
Excel 2010を使用していますか?試して
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
私は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
Sub CopyValueWithFormatting()
Sheet1.Range("A1").Copy
With Sheet2.Range("B1")
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteValues
End With
End Sub
VBScriptを使用してExcelで1つのシートから別のシートに太字テキストをコピーする 'Create Object Object
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