Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表内の全テキストを2重ループを使わず取得する

Word VBAで表内の全テキストを2重ループを使わず取得する

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

python-docxを使って2重ループを使わずに表内データを取得できることを、ご紹介しました。

Wordの表内データは2重ループを使って取得するほうが実務では便利そうではありますが、Word VBAでも2重ループを使わずに表内の全データを取得できます。

[スポンサードリンク]

Word文書の表内の全テキストを取得するサンプルマクロ

アクティブな文書(Wordファイル)に表を作成しておいてから、以下のSubプロシージャを実行してください。

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

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表内の全テキストを2重ループを使わず取得する

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

検索


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

.