書式設定された複数行のテキストを 1 つのセルに結合する

書式設定された複数行のテキストを 1 つのセルに結合する

この質問への回答によって、私が SO に投稿した VBA の質問というより大きな疑問にたどり着けることを期待しています。

書式設定されたテキストが複数行あり、その内容を 1 つのセルに結合して書式を失わないようにしたい場合、それは可能ですか?

次のいずれかができるようです:

  1. 複数行のテキストをセルに貼り付けます (書式なし)。
  2. 複数の行に複数のセルを生成する貼り付けを実行します。

しかし、私は組み合わせ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)。

関連情報