【VBAリファレンス|実務向け】Wordの「表」を瞬時に「文字列」へ変換するテクニック

スポンサーリンク

導入:なぜこの操作が必要なのか

実務において、取引先から送られてきたWordファイルが「表形式」で作成されているものの、データとして活用しにくい、あるいは他のシステムへ貼り付けるために「ただのテキストデータ」に変換したいというケースは非常に多いものです。表の枠線を一つずつ消したり、手動でコピペを繰り返したりするのは非常に非効率です。Wordの標準機能を使えば、クリック数回で表の構造を維持したまま文字列へと変換できます。

基礎知識:表の解除とは

Wordの「表の解除」機能は、表内の各セルに入力された情報を保持したまま、表のグリッド線(罫線)を取り払い、列と列の区切りを「タブ」や「カンマ」、「段落」などの記号に置き換える機能です。これにより、表形式という「レイアウト」から、データとしての「テキスト」へと性質を変えることができます。

実装:表を文字列に戻す手順

基本的な手順は以下の通りです。

1. 表内の任意の場所をクリックし、左上に出現する「十字マーク」をクリックして表全体を選択します。
2. リボンの「レイアウト」タブをクリックします(表を選択しているときのみ表示されます)。
3. 「データ」グループにある「表の解除」をクリックします。
4. 表示されたダイアログボックスで、区切り文字(タブ、カンマ、段落など)を選択して「OK」を押します。

サンプルプログラム:VBAで「表を文字列に変換」する

もし、大量のドキュメントに含まれるすべての表を一括で処理したい場合、あるいは特定の処理の過程で自動的に表を解除したい場合は、VBAを使用すると非常に効率的です。以下に実用的なコード例を紹介します。

Sub ConvertAllTablesToText()
‘ Word文書内のすべての表を「タブ区切り」の文字列に変換するマクロ
Dim tbl As Table

‘ 文書内のすべての表をループ処理
For Each tbl In ActiveDocument.Tables
‘ ConvertToTextメソッドを使用
‘ Separator:=wdSeparateByTabs でタブ区切りを指定
tbl.ConvertToText Separator:=wdSeparateByTabs
Next tbl

MsgBox “すべての表を文字列に変換しました。”, vbInformation
End Sub

※コード解説:ActiveDocument.Tablesは文書内の全テーブルを指します。ConvertToTextメソッドを使うことで、手動操作と同じように表を解除できます。Separator引数を変更することで、カンマ区切り(wdSeparateByCommas)などに変更も可能です。

応用・注意点:現場で陥りやすい罠

1. 区切り文字の選択に注意
変換後のデータをExcelに貼り付ける予定であれば、「タブ区切り」にすることをお勧めします。タブ区切りであれば、Excelに貼り付けた瞬間に自動的にセル分割されるため、非常にスムーズです。
2. ネストされた表(表の中の表)
表の中に別の表が含まれている場合、VBAで一括処理するとエラーになることがあります。複雑な構造の場合は、手動で一つずつ解除するか、構造を単純化してから実行するようにしてください。
3. 書式の消失
表を解除すると、セルに適用されていた「背景色」や「枠線の太さ」などの書式はすべて消去されます。あくまで「中のデータ」を取り出すための作業であることを念頭に置いて操作してください。

このテクニックを活用して、Wordのデータ整形作業を劇的に効率化させてください。

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