変換を With ブロックの外に移動する必要があると思います。
私は Word VBA の専門家ではないので、これはキーボード入力を複製するのではなく、一般的な文字列関数を使用するアプローチです。したがって、同じタスクを達成するためのさまざまなアプローチがある可能性があります:)これが「正しい」方法であると思います。これは、「入力」を模倣するのではなく、オブジェクトを直接操作することが一般的に推奨されるためです。
テキストを物理的に「選択」する必要がないように修正
注: これはドキュメント内のすべてのテキストを使用するため、変更が必要になる場合があります。
Sub Test()
Dim doc As Document
Dim arr As Variant
Dim txtRange As Range
Dim i As Long
Set doc = ActiveDocument
Set txtRange = doc.Range(0, doc.Characters.Count)
'First, replace the paragraph breaks with commas
With txtRange.Find
.Text = "^p"
.Replacement.Text = ","
.Execute Replace:=wdReplaceAll
End With
arr = Split(Left(txtRange.Text, Len(txtRange.Text) - 1), ",")
For i = LBound(arr) To UBound(arr)
arr(i) = "'" & arr(i) & "'"
Next
txtRange.Text = Join(arr, ",")
End Sub
コメントから更新
これが機能していることを完全に確認しました。コードが正しく実装されていることを再確認してください。あなたの説明を満たすテキストの例を次に示します。
そのテキストを選択してマクロを実行し、F8 を使用してステップ実行します。ブロックの最後でWith
、段落区切りがコンマに置き換えられていることを確認します。
ループが終了したら、For...Next
[ローカル] ウィンドウを使用して、新しい配列に単一引用符で囲まれた数値が含まれていることを確認します。
Selection.Text
次の行は、配列からこれらの項目を出力し、確認済みの を置き換えます。