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)`で改行コードを指定し、それを空文字に置き換えています。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

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

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

コメント

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