Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表をコピー&ペースト

Word VBAで表をコピー&ペースト

動作検証バージョン:64bit Windows 10 Pro + 32bit Word(バージョン2105 ビルド14026.20270 Microsoft Store)

「vba ワード操作 表の複写」
といった検索キーワードでアクセスがありました。

詳細がわかりませんので、表をコピー&ペーストする(複製する)簡単なWordマクロをご紹介しておきます。

1つ目の表を文書末尾にコピー&ペーストするサンプル

以下のSubプロシージャを実行すると、アクティブ文書の1つ目の表がコピーされて、文書の末尾に貼り付けられます。

Sub 一つ目の表を文書の末尾に複製する()
 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プロシージャを実行すると、カーソルの置かれている表が、新規文書にコピー&ペーストされます。

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で表をコピー&ペースト

「表・テーブル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.