パソコン悪戦苦闘記録

Word文書内のデータを次々と入れ替えるVBAマクロ

 Wordマクロで、文書内にデータ(文字列)を挿入するとき、
  データ挿入の位置、場所
の指定は、Excelのようには簡単ではありません。

 Excelでは、セルを特定するだけで、どこでも自由にデータを挿入することができます。
 一方、Wordでは、セルのようなものがないので、「データ挿入場所」をあらかじめ文書内に設定しておく必要があります。

 「データ挿入場所」の設定によく使われるのが、フィールド表(罫線)です。また、ブックマークを使うこともあります。

 私は、これまでブックマークばかりを使ってきました。文書内にブックマークを設定しておけば、その位置にマクロでデータ(文字列)を挿入することができます。

 ところが、先日、ブックマークの位置に、次から次にデータを入れ替えるマクロを作ったのですが、意図どおりには動いてくれませんでした。
 繰り返し処理で、順次、データを入れ替えようとしたのですが、前のステップで挿入した文字列がそのまま残ってしまい、次のステップで挿入した文字列がそれに付け加わってしまいます。その結果、各ステップで挿入した文字列がすべて連結した文字列となってしまいます。

 具体的には、
  こちらの記事をご覧ください。

 そこで、前のステップで挿入した文字列を削除しようと、
  .Bookmarks(1).Range.Delete
というコードを書きました。
 ところが、これだと、文字列ばかりでなく、ブックマーク自体も削除されてしまいます。

 具体的には、
  こちらの記事をご覧ください。
 
 こういうときのために、Wordには、「差し込み印刷」機能があります。
 けれでも、マクロ、VBAの方が私は使い慣れているし、何より自由がききます。

 そこで、Word文書内の文字列を、Wordマクロで順次入れ替えるにはどうすればよいのか、探ってみました。

 最初は、ブックマークであれこれ試したのですが、うまくいきません。
 そのため、ブックマーク方式はあきらめて、透明な表(罫線)を使ってみました。
 そうすると、今度は、難なく成功しました。あっけないほどの解決でした。

 文書内のデータを順次入れる場所に、透明な表(罫線)をあらかじめ設定しておくのです。
 その場所に、マクロでデータを入れます。





 VBAコードは、次のとおりです。

Sub Macro1()
Dim i As Integer
For i = 1 To 9
With Documents("Hoge.docx").Paragraphs(i).Range
ThisDocument.Tables(1).Range.Text = Left(.Text, Len(.Text) - 1)
ThisDocument.PrintOut
End With
Next i
End Sub



 文書内に設定した表は、枠線を透明にしているから、プリントアウト書面に出てくることはありません。表内の文字列だけが印刷されます。
 
 なお、PDF文書として保存するには、次のコードを入れます。

ThisDocument.ExportAsFixedFormat OutputFileName:= _
"D:¥文書" & i & ".pdf", _
ExportFormat:=wdExportFormatPDF


 今日(2023年12月29日)から正月休み、仕事は休みです。
 時間があるから、ようやく先日のリベンジを果たすことができました。




それでは、また次の記事で
goosyun
名前:
コメント:

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

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

 

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

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

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