特定の記号 (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."
お役に立てれば幸いです。