「vba ワード操作 表の複写」
といった検索キーワードでアクセスがありました。
詳細がわかりませんので、表をコピー&ペーストする(複製する)簡単なWordマクロをご紹介しておきます。
1つ目の表を文書末尾にコピー&ペーストするサンプル
以下のSubプロシージャを実行すると、アクティブ文書の1つ目の表がコピーされて、文書の末尾に貼り付けられます。
With ActiveDocument
If .Tables.Count = 0 Then Exit Sub
.Tables(1).Range.Copy
.Bookmarks("\EndOfDoc").Range.Paste
End With
End Sub
表のコピーはRange.Copyで
Word VBAで表を表すTableオブジェクトには、コピーを行うCopyメソッドは用意されていません。
そこで、TableオブジェクトのRangeプロパティを使って表全体を表すRangeオブジェクトを取得して、RangeオブジェクトのCopyメソッドを利用しています。
With ActiveDocument
.Tables(1).Range.Copy
表全体をコピーしたら、定義済みブックマークの「EndOfDoc」を使って、文書末尾を表すRangeオブジェクトを取得して、Range.Pasteメソッドで貼り付けを行っています。
.Bookmarks("\EndOfDoc").Range.Paste
実行時エラーが発生しないように
表の存在しない文書がアクティブな状態で、
With ActiveDocument
.Tables(1).Range.Copy
が実行されると、実行時エラーとなってしまいますから、事前に表が存在するかを確認して、存在しなければ、Subプロシージャを抜けています。
With ActiveDocument
If .Tables.Count = 0 Then Exit Sub
カーソルのある表を新規文書にコピー&ペーストするサンプル
以下のSubプロシージャを実行すると、カーソルの置かれている表が、新規文書にコピー&ペーストされます。
If Selection.Tables.Count = 0 Then Exit Sub
Selection.Tables(1).Range.Copy
Documents.Add.Range(0, 0).Paste
End Sub
Selection.Tables経由でカーソル位置のTableを取得
先ほどのSubプロシージャとは、取得するTableオブジェクトが異なります。
Selection.Tables(1).Range.Copy
Selectionオブジェクトに用意されているTablesプロパティを経由して、カーソルの置かれている表を表すTableオブジェクトを取得して、やはりRange.Copyメソッドでコピーを行っています。
Document.Addで作成したDccumentのRange(0, 0)
DocumentsコレクションのAddメソッドで新規文書を作成して、
Documents.Add.Range(0, 0).Paste
『Excel VBAユーザーのためのWord VBA入門』のchapter 3でも解説しているDocumentオブジェクトのRangeメソッドを使って文書の先頭を表すRangeオブジェクトを取得して、
Documents.Add.Range(0, 0).Paste
Range.Pasteメソッドで貼り付けを行っています。
Documents.Add.Range(0, 0).Paste
最終更新日時:2021-09-03 16:16
Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表をコピー&ペースト