ところが、Wordマクロで文書内に文字列を挿入しようとすると、Excelのようにはいきません。予め、文字列を挿入したい位置に、目印を設定しておく必要があります。
その目印設定には、いくつか方法があります。よく使われるのが、フィールドや、透明な罫線です。
私がいつも使用するのが、ブックマークです。文書内にブックマークを設定しておけば、その場所に文字列を挿入することができるようになります。
先日、Word文書内に設定したブックマーク(長さ0)の箇所に、次々と文字列を挿入しようとしました。
そこで、次のような繰り返し処理のVBAコードを書きました(便宜上、単純化していますが。)。
Dim i As Integer
For i = 1 To 5
With ThisDocument
.Bookmarks(1).Range.Text = i
.PrintOut
.Bookmarks(1).Range.Text = ""
End With
Next i
ところが、このコードの6行目では、挿入した文字列が、意図どおりに削除されません。
挿入した文字列が残る結果、繰り返し処理で、「54321」という文字列が形成されていきます。
ブックマークに挿入した文字列を削除する方法はないものか、1週間、悩みました。
そして、本日、ようやく解決策を見つけました。
挿入したテキストを削除する方法としては、以下のように Range オブジェクトの Delete メソッドを使用することができます。
Dim i As Integer
For i = 1 To 5
With ThisDocument
' ブックマークにテキストを挿入
.Bookmarks(1).Range.Text = i
.PrintOut
' ブックマークのテキストを削除
.Bookmarks(1).Range.Delete
End With
Next i
このコードでは、ブックマークにテキストを挿入した後、 Delete メソッドを使用してそのテキストを削除しています。これにより、繰り返し処理の各ステップで挿入されたテキストが削除され、新しいテキストが挿入されることになります。
あぁ、問題が解決して、スッキリ・・・。
それでは、また次の記事で
■■■■ goosyun ■■■■
《2023年12月29日追記》
【お詫び】
本記事では、問題が解決できたように書いていますが、実は解決になっていませんでした。
あれこれと探って、ようやく解決策を見つけました。
⇒ こちらの記事をご覧ください。
最近の「VBAプログラミング・マクロ」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事