当サイトの記事にはプロモーションが含まれています。

Word VBAでテーブルを取得する方法|初心者向けにわかりやすく解説

パソコンパソコン・スマホ教室
スポンサーリンク

Wordの文書内にあるテーブル(表)のデータをVBAで取得したいけれど、どう始めたらよいか分からない…そんな方のために、初心者でも安心して取り組める方法をお伝えします。今回は、実際のコード例を交えて、順を追って解説しますので、ぜひ最後までご覧ください。

スポンサーリンク

Word VBAでテーブルを取得する基本の流れ

Wordのイメージ

Wordのイメージ

Word VBAでテーブルを操作するためには、まず文書内のテーブルを取得する必要があります。以下のコードを使うことで、文書内の最初のテーブルを取得できます。

Dim tbl As Table
Set tbl = ActiveDocument.Tables(1)

このコードでは、`ActiveDocument.Tables(1)`によって、現在アクティブな文書内の1番目のテーブルを取得しています。もし、複数のテーブルがある場合は、インデックス番号を変更することで、他のテーブルを取得することができます。

テーブルのセルからデータを取得する方法

テーブル内の各セルからデータを取得するには、以下のようなコードを使用します。

Dim cel As Cell
For Each cel In tbl.Range.Cells
Debug.Print cel.Range.Text
Next cel

このコードでは、`tbl.Range.Cells`でテーブル内のすべてのセルを取得し、`For Each`ループを使って各セルを順番に処理しています。`cel.Range.Text`でセル内のテキストを取得し、`Debug.Print`でイミディエイトウィンドウに表示しています。

テーブル内の特定のセルを取得する方法

特定の行と列のセルを取得するには、以下のようなコードを使用します。

Dim cell As Cell
Set cell = tbl.Cell(Row:=2, Column:=3)
Debug.Print cell.Range.Text

このコードでは、`tbl.Cell(Row:=2, Column:=3)`で2行3列目のセルを取得し、`cell.Range.Text`でそのセルのテキストを取得しています。

テーブル内のデータを配列に格納する方法

テーブル内のデータを配列に格納することで、後でデータを加工したり、他の処理に利用したりすることができます。以下のコードでは、テーブル内のデータを2次元配列に格納しています。

Dim arrData() As String
Dim i As Integer, j As Integer
ReDim arrData(tbl.Rows.Count, tbl.Columns.Count)

For i = 1 To tbl.Rows.Count
For j = 1 To tbl.Columns.Count
arrData(i, j) = tbl.Cell(Row:=i, Column:=j).Range.Text
Next j
Next i

このコードでは、`ReDim`で2次元配列`arrData`をテーブルの行数と列数に合わせて再定義し、`For`ループを使って各セルのデータを配列に格納しています。

テーブル内のデータをExcelに転送する方法

Wordのテーブル内のデータをExcelに転送するには、以下のようなコードを使用します。

Dim objExcel As Object
Dim objWorkbook As Object
Dim objWorksheet As Object
Dim i As Integer, j As Integer

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add
Set objWorksheet = objWorkbook.Sheets(1)

For i = 1 To tbl.Rows.Count
For j = 1 To tbl.Columns.Count
objWorksheet.Cells(i, j).Value = tbl.Cell(Row:=i, Column:=j).Range.Text
Next j
Next i

このコードでは、`CreateObject(“Excel.Application”)`でExcelを起動し、`objWorkbook.Sheets(1)`で新しいワークシートを取得しています。その後、`For`ループを使って、Wordのテーブル内のデータをExcelのセルに転送しています。

よくある質問や疑問

Q1: VBA初心者でもこのコードを使えるでしょうか?

はい、初心者の方でも安心して取り組める内容です。コードの各部分を順を追って解説していますので、わからない部分があれば、ぜひご質問ください。

Q2: 複数のテーブルがある場合、どのように処理すればよいですか?

複数のテーブルがある場合は、`For Each`ループを使って、`ActiveDocument.Tables`コレクション内の各テーブルを順番に処理することができます。

Dim tbl As Table
For Each tbl In ActiveDocument.Tables
' 各テーブルに対する処理
Next tbl

Q3: セル内の改行を取り除く方法はありますか?

はい、セル内の改行を取り除くには、`Replace`関数を使って、改行コードを空文字に置き換えることができます。

Dim cellText As String
cellText = Replace(tbl.Cell(Row:=1, Column:=1).Range.Text, Chr(13) & Chr(7), "")

このコードでは、`Chr(13) & Chr(7)`で改行コードを指定し、それを空文字に置き換えています。

まとめ

Word VBAでテーブルを取得する方法について、基本的な流れから応用的な活用方法まで解説しました。初心者の方でも安心して取り組める内容となっていますので、ぜひ実際に手を動かして試してみてください。

他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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