【Word VBA】イテレーション(For Each)によるWord文章中のテーブル情報取得サンプル(表全体、列単位、行単位)

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

WordのVBA(マクロ)を使って、文書内にある表(テーブル)のセル情報をイテレーション(For Eachステートメント)で効率的に取得する方法について解説します。

Excel VBAではRangeオブジェクトを使った走査がよく使われますが、Word VBAでテーブル構造を細かく走査するには、TableオブジェクトのRange.Cellsや、特定の行・列に対するCellsコレクションを組み合わせるのがポイントになります。

前提条件

  • 動作確認環境: Microsoft Word (Office 365 / Word 2019以降)
  • 対象文書内に少なくとも1つの表(テーブル)が存在していること

1. テーブル全体のすべてのセル情報を取得する

次のサンプルコードは、アクティブドキュメント(またはコードを記述している文書モジュール)の最初のテーブルにあるすべてのセルを順番に走査し、イミディエイトウィンドウにテキストを出力します。

Sub テーブル情報の取得_全体()
    Dim t As Table
    Dim c As Cell
    
    ' 文書内の1番目のテーブルを指定
    Set t = ActiveDocument.Tables(1)
    
    ' テーブル内の全セルをイテレーションで走査
    For Each c In t.Range.Cells
        ' セル内のテキストを出力(末尾のセル終了マーク含む)
        Debug.Print Replace(c.Range.Text, vbCr & Chr(7), "")
    Next c
End Sub

2. 列単位でセル情報を取得する

特定の列に絞って情報を取得したい場合は、Columns(インデックス).Cellsを使います。次の例では、2列目のすべてのセルの情報を取得します。

Sub テーブル情報の取得_列単位()
    Dim t As Table
    Dim c As Cell
    
    Set t = ActiveDocument.Tables(1)
    
    ' 2列目のセルのみを走査
    For Each c In t.Columns(2).Cells
        Debug.Print Replace(c.Range.Text, vbCr & Chr(7), "")
    Next c
End Sub

3. 行単位でセル情報を取得する

特定の行に絞って情報を取得したい場合は、Rows(インデックス).Cellsを使います。次の例では、3行目のすべてのセルの情報を取得します。

Sub テーブル情報の取得_行単位()
    Dim t As Table
    Dim c As Cell
    
    Set t = ActiveDocument.Tables(1)
    
    ' 3行目のセルのみを走査
    For Each c In t.Rows(3).Cells
        Debug.Print Replace(c.Range.Text, vbCr & Chr(7), "")
    Next c
End Sub

注意点・補足

  • Wordのテーブルセルに含まれるテキストには、セル終了マーク(vbCr & Chr(7))が含まれています。そのままDebug.Printすると意図しない改行が入るため、実務では上記のコード例のようにReplace関数などで取り除くと扱いやすくなります。
  • Me.Tables(1) は標準モジュールではなくシートや文書などのオブジェクトモジュール内で記述する場合に有効ですが、一般的には ActiveDocument.Tables(1) や明示的なドキュメントオブジェクトを指定する方が確実です。

参考情報

Microsoft Learn: Table オブジェクト (Word)

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 変更リンク切れとなっていた古いサポート情報をMicrosoft Learnの公式ドキュメントへ置換しました。
  • 変更ブロッククォートや特殊なHTMLタグで崩れていたコード表現を、シンタックスハイライト対応のプレーンなコードブロック形式へ修正しました。
  • 追加テーブルの行単位と列単位の処理における変数定義や説明の誤りを訂正し、期待される出力結果の解説を追加しました。

文書情報

記事タイトル
【Word VBA】イテレーション(For Each)によるWord文章中のテーブル情報取得サンプル(表全体、列単位、行単位)
作成日
更新日
Source URL
https://papanda925.com/?p=506

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました