python-docxを使って2重ループを使わずに表内データを取得できることを、ご紹介しました。
Wordの表内データは2重ループを使って取得するほうが実務では便利そうではありますが、Word VBAでも2重ループを使わずに表内の全データを取得できます。
Word文書の表内の全テキストを取得するサンプルマクロ
アクティブな文書(Wordファイル)に表を作成しておいてから、以下のSubプロシージャを実行してください。
Dim cel As Cell
For Each cel In ActiveDocument.Tables(1).Range.Cells
Dim txt As String
txt = cel.Range.Text
Debug.Print Left(txt, Len(txt) - 2)
Next
End Sub
1つ目の表内に入力されているすべての文字列が、イミディエイトウィンドウに出力されます。
サンプルマクロで行っている処理
Word VBAの場合、Tableオブジェクトに用意されているRangeプロパティで取得できるRangeオブジェクトの、
Cellsプロパティを使うと、
表内の全セルを表すCellsコレクションを取得できます。
「ActiveDocument.Tables(1).Range.Cells」で取得した全セルに対するFor Each~Nextループで、各セルの文字列を取得しています。
For Each cel In ActiveDocument.Tables(1).Range.Cells
Dim txt As String
txt = cel.Range.Text
各セルの文字列は、Cellオブジェクトに用意されているRangeプロパティで取得したRangeオブジェクトの、
Textプロパティで取得しています。
ぜひ自分の手を動かして、オブジェクトブラウザーを確認してみてください。
末尾2文字の削除が必要
Word VBAで表内文字列を取得する場合、段落記号と、セルの区切り表す制御文字が含まれているので、Left関数を使って末尾の2文字を削除しています。
Debug.Print Left(txt, Len(txt) - 2)
最終更新日時:2020-08-18 17:39
- Newer:Excel VBAのTextFrameにTextRangeはありません
- Older:Word VBAで行間を固定値に
Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表内の全テキストを2重ループを使わず取得する