パソコン悪戦苦闘記録

Word文書内のブックマークの文字列削除マクロ

 Excelマクロでデータを挿入するとき、挿入位置は自由に選ぶことができます。データを挿入したいセルを特定すればよいからです。
 ところが、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日追記》
【お詫び】
 本記事では、問題が解決できたように書いていますが、実は解決になっていませんでした。
 あれこれと探って、ようやく解決策を見つけました。
  こちらの記事をご覧ください。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事