Excel でテキストをハードリターンで置き換えるマクロ

Excel でテキストをハードリターンで置き換えるマクロ

特定の記号 (Excel 内) を検索し、それを同じセル内のハードリターンに置き換えて、セルの整合性を維持するマクロをどのように記述すればよいでしょうか?

私はよく Word 文書を Excel に変換しますが、変換する前に Word 文書内のすべてのハードリターンをポンド記号 (@@) に置き換えて、Excel 文書の貼り付け機能でセルの整合性が維持されるようにします (ハードリターンを削除しないと、リターンごとに新しいセルが作成されます)。

Excel に貼り付けた後、「@@」記号をハードリターンに置き換える必要がありますが、「置換」の選択肢に「ハードリターン」が見つかりません。これを行うにはマクロが必要だと思います。

ご協力いただければ幸いです。

答え1

実際に、検索と置換オプションを使用してこれを行うことができます。
セルのテキストを次のように変更します: ="this @@ is @@ your @@ cell @@ text"。

次に、検索と置換に進み、@@ (または置換したいもの) を「 & char(10) & 」に置き換えます。これにより、出力が「this @@ is @@ your @@ cell @@ text」から「this is your cell text」に変わります。

次に、セルをフォーマットして単語の折り返しを有効にする必要があります(右クリック > 書式 > 配置タブ > 単語の折り返しをチェック)。新しい出力は次のようになります。
これはセルのテキスト
です。


答え2

短いマクロの場合:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub

答え3

これは、Google で「ハード ラップ テキスト Excel マクロ」を検索したときに最も多くヒットした項目の 1 つでした。そこで、幅に基づいてテキストのセルをラップするための私のソリューションを次に示します。

Function hardwrap(useThis As Range, WrapAt As Integer) As String
    Dim i As Integer
    Dim Temp As String
    Dim retVal As String
    i = 0
    retVal = useThis.Value
    With useThis
        If Len(.Value) > WrapAt Then
            Temp = retVal
            Do
                i = i + WrapAt
                Do
                    If Mid(Temp, i, 1) = " " Then
                        Temp = Left(Temp, i - 1) & Chr(10) & Right(Temp, Len(Temp) - i)
                        Exit Do
                    Else
                        i = i - 1
                        If i < 0 Then
                            Exit Do
                        End If
                    End If
                Loop
            Loop While i < Len(Temp) - WrapAt
            retVal = Temp
        End If
    End With
    hardwrap = retVal
End Function

このコードは、Andrew Poulsom による次の関数に大きく基づいています:http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

基本的に、文字列が wrap at 変数より長い場合は、先に進んで wrap ポイントに移動し、スペースを探して後戻りします。スペースが見つかると、そのスペースを改行に置き換えます。その後、文字列の残りの部分についてこれを繰り返します。

私のバージョンはもう少し一般的です(私見です)。

例:

A1:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

A2:=hardwrap(A1,40)

"Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est
laborum."

お役に立てれば幸いです。

関連情報