【VBAリファレンス】【Word VBA】表の文字列はそのままで「罫線だけ」を一瞬で消す魔法のテクニック

スポンサーリンク

こんにちは!Excel VBA講師の私ですが、実はWordのマクロ(VBA)も大好物です。

Wordで作業をしていて、「この表、中身の文字は大事なんだけど、表の枠線が邪魔だな……」と思ったことはありませんか?例えば、箇条書きのレイアウトを整えるために一旦表を使ったけれど、最終的には枠線を消してスッキリ見せたい、といったケースです。

手動でやるなら「表のプロパティ」から「線なし」を設定すれば良いのですが、ドキュメント内に何十個も表がある場合、一つずつ設定するのは非効率極まりないですよね。

今回は、そんな「表の罫線を一瞬で消し去り、テキストだけを綺麗に残す」というテクニックを、Word VBAを使ってプロフェッショナルに解決する方法を解説します。

なぜWord VBAを使うのか?

Wordの標準機能でも「罫線なし」設定は可能ですが、複数の表が混在する文書や、特定の条件下にある表だけを操作したい場合、手作業ではミスが発生しやすくなります。VBAを使えば、以下のメリットがあります。

1. **一括処理**: 文書内のすべての表を数秒でクリアできる。
2. **正確性**: 誤って文字列を削除したり、段落を壊したりするリスクがない。
3. **再現性**: 誰が実行しても同じ結果が得られる。

それでは、具体的なコードを見ていきましょう。

表の罫線を消すVBAコード

まずは、標準モジュールに以下のコードを貼り付けてみてください。

Sub RemoveTableBordersKeepText()
Dim tbl As Table
Dim doc As Document

Set doc = ActiveDocument

‘ 文書内のすべての表をループ処理
For Each tbl In doc.Tables
‘ 罫線のスタイルを「なし」に設定
tbl.Borders.Enable = False
Next tbl

MsgBox “すべての表の罫線を削除しました!”, vbInformation
End Sub

このコードは、文書内に存在するすべての表をループし、`Borders.Enable = False` というプロパティを指定することで、一括で枠線を消去します。非常にシンプルですが、強力なツールです。

コードの詳細解説

初心者の方のために、少しだけ深掘りします。

* **`For Each tbl In doc.Tables`**: Word文書内の「Tablesコレクション」を一つずつ取り出すためのループです。文書内に表が10個あっても100個あっても、この記述だけで全自動で処理してくれます。
* **`tbl.Borders.Enable = False`**: これが今回の主役です。Bordersプロパティは表の枠線全体を制御します。`Enable` を `False` にすることで、上下左右、内側の線まで含めてすべて「なし」の状態に設定します。

応用編:特定の表だけを対象にする

もし、「文書内のすべての表ではなく、選択している表だけを消したい」という場合は、コードを少し変更します。

Sub RemoveSelectedTableBorders()
‘ 選択中の表があるか確認
If Selection.Information(wdWithInTable) Then
Selection.Tables(1).Borders.Enable = False
Else
MsgBox “表の中にカーソルを置いて実行してください。”, vbExclamation
End If
End Sub

このように `Selection` オブジェクトを使うことで、カーソル位置にある表だけをピンポイントで消すことも可能です。実務ではこちらの方が使う頻度が高いかもしれませんね。

罫線だけを消した後の「見栄え」に注意

罫線を消すと、Word上では「グリッド線」が表示されることがあります。これはあくまで編集用の補助線であり、印刷されませんが、画面上で見づらい場合は「レイアウト」タブから「グリッド線の表示」をオフにしてください。

また、罫線を消した後に「文字列の配置」が崩れてしまうことがあります。表のセル内での配置(左揃え、中央揃えなど)は、表の枠線がなくなっても保持されますが、必要に応じて「段落」設定を調整することをお勧めします。

プロフェッショナルとしてのアドバイス

VBAで表を操作する際、最も注意すべきなのは「ネストされた表(表の中にある表)」です。今回のコードは単純な表には完璧に動作しますが、複雑な入れ子構造になっている場合は、再帰処理が必要になることもあります。

しかし、通常のビジネス文書であれば、今回紹介したコードで9割以上のケースはカバーできるはずです。

もし、さらに高度な処理――例えば「外枠だけ残して内側の線だけ消したい」や「特定の色の罫線だけ消したい」といった要望があれば、`tbl.Borders(wdBorderTop).LineStyle = wdLineStyleNone` のように、個別の線を指定することで制御可能です。

まとめ

Wordの表操作において、罫線とテキストを分離して考えることは、ドキュメントのクオリティを上げるための第一歩です。手作業による「単純作業」はマクロに任せ、皆さんは「文章の内容」や「構成」を考えるクリエイティブな時間に集中してください。

VBAは難しいと感じるかもしれませんが、まずは今回のような小さなコードをコピー&ペーストして、実際に動かしてみることから始めてみてください。その成功体験が、あなたの業務効率を劇的に変えるはずです。

それでは、また次回の記事でお会いしましょう!Excel/Word VBAの学習、応援しています!

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