
この質問への回答によって、私が SO に投稿した VBA の質問というより大きな疑問にたどり着けることを期待しています。
書式設定されたテキストが複数行あり、その内容を 1 つのセルに結合して書式を失わないようにしたい場合、それは可能ですか?
次のいずれかができるようです:
- 複数行のテキストをセルに貼り付けます (書式なし)。
- 複数の行に複数のセルを生成する貼り付けを実行します。
しかし、私は組み合わせ2の。
私の根本的な問題は、複数行の HTML を 1 つのセルに取り込み、VBA を通じて書式設定を維持しようとしていることです。これまでのところ、それは成功していません。
答え1
この解決策は、ゴミ収集車のバレエダンスのような優雅さを備えており、ラッシュアワーの交通渋滞に巻き込まれた同じトラックと同じくらいの速さですが、機能します。
j = 1
For Each myRange In Range1
If Range0.Value = vbNullString Then
Range0.Value = myRange.Value
Else
Range0.Value = Range0.Value & Chr$(10) & myRange.Value
End If
Next myRange
For Each myRange In Range1
For i = 1 To myRange.Characters.Count
Range0.Font.Name = myRange.Characters(Start:=j, Length:=1).Font.Name
Range0.Characters(Start:=j, Length:=1).Font.FontStyle = myRange.Characters(Start:=j, Length:=1).Font.FontStyle
Range0.Characters(Start:=j, Length:=1).Font.Size = myRange.Characters(Start:=j, Length:=1).Font.Size
Range0.Characters(Start:=j, Length:=1).Font.Strikethrough = myRange.Characters(Start:=j, Length:=1).Font.Strikethrough
Range0.Characters(Start:=j, Length:=1).Font.Superscript = myRange.Characters(Start:=j, Length:=1).Font.Superscript
Range0.Characters(Start:=j, Length:=1).Font.Subscript = myRange.Characters(Start:=j, Length:=1).Font.Subscript
Range0.Characters(Start:=j, Length:=1).Font.OutlineFont = myRange.Characters(Start:=j, Length:=1).Font.OutlineFont
Range0.Characters(Start:=j, Length:=1).Font.Shadow = myRange.Characters(Start:=j, Length:=1).Font.Shadow
Range0.Characters(Start:=j, Length:=1).Font.Bold = myRange.Characters(Start:=j, Length:=1).Font.Bold
Range0.Characters(Start:=j, Length:=1).Font.Italic = myRange.Characters(Start:=j, Length:=1).Font.Italic
Range0.Characters(Start:=j, Length:=1).Font.Underline = myRange.Characters(Start:=j, Length:=1).Font.Underline
Range0.Characters(Start:=j, Length:=1).Font.Color = myRange.Characters(Start:=j, Length:=1).Font.Color
Range0.Characters(Start:=j, Length:=1).Font.TintAndShade = myRange.Characters(Start:=j, Length:=1).Font.TintAndShade
Range0.Characters(Start:=j, Length:=1).Font.ThemeFont = myRange.Characters(Start:=j, Length:=1).Font.ThemeFont
j = j + 1
Next i
j = j + 1
Next myRange
Range0
は複数のセルをコピーする範囲であり、コピーRange1
するすべてのセルが含まれています(注:Range0
のサブセットにすることはできませんRange1
)。