こんにちは! Word VBAの世界へようこそ。
日々、大量のWord文書と格闘していると、「なぜか一部の段落だけ変な背景色(網掛け)がついていて、見づらい……」なんてストレスに直面したことはありませんか?
他の人が作った資料を引き継いだり、あちこちからコピペを繰り返したりしているうちに、文書の見た目がゴチャゴチャになってしまうのは、ビジネスの現場では「あるある」の光景です。
これを1つずつ手作業で選択して消していくのは、気の遠くなるような作業ですよね。でもご安心ください。今回は、「段落の塗りつぶし色(背景色)を一瞬ですべてクリアし、文書の視認性を標準化するクリーンアップマクロ」を一緒に作っていきます。
ここをクリアすれば、Word VBAのオブジェクト操作の基本はバッチリです! 一緒に優しく紐解いていきましょう。
—
1. なぜ「手作業」ではなく「VBA」なのか?
Wordには優れた「スタイルのクリア」機能がありますが、背景色や網掛けといった細かい装飾は、予期せぬ形で段落書式にこびりついていることがあります。
これを全選択して「塗りなし」に設定しようとしても、テーブル(表)の中の網掛けと混ざってしまったり、うまく一括解除できなかったりする厄介なケースが多々あります。
そこでVBAの登場です。Wordの文書構造の最小単位である「段落(Paragraph)」をひとつずつ巡回し、「背景色を強制的にクリア(無色化)する」という命令をプログラムに実行させます。人間がやると数分、あるいは数十分かかる作業を、わずかコンマ数秒で終わらせることができるのがVBAの醍醐味です。
—
2. 【実践】背景色を一括クリアするマクロのコード
まずは、実際のコードを見てみましょう。
以下のコードを、そのままWordのVBAエディタ(後述)にコピー&ペーストしてください。
Sub ClearParagraphShading()
‘ 変数の宣言(文書全体の段落を扱うための入れ物)
Dim targetPara As Paragraph
Dim counter As Long
‘ 処理カウンターの初期化
counter = 0
‘ 画面のちらつきと再描画をストップし、処理速度を爆発的に上げるプロの技
Application.ScreenUpdating = False
‘ 文書内のすべての段落を上から順にループ(巡回)する
For Each targetPara In ActiveDocument.Paragraphs
‘ 段落の背景色(網掛け)を「色なし(wdColorAutomatic / wdColorIndexNone)」に設定
‘ ※ShadingオブジェクトのBackgroundPatternColorをクリアします
targetPara.Shading.BackgroundPatternColor = wdColorAutomatic
‘ 処理した段落の数をカウント
counter = counter + 1
Next targetPara
‘ 画面の再描画を復活させる
Application.ScreenUpdating = True
‘ 完了メッセージを表示
MsgBox “クリーンアップ完了!” & vbCrLf & _
“合計 ” & counter & ” 個の段落から背景色をクリアしました。”, _
vbInformation, “処理成功”
End Sub
—
3. コードの注目ポイントを優しく解説
初心者の方に向けて、「このコードのどこがどう動いているのか」の重要なポイントを3つに絞って解説します。
① `For Each … In …` (ループ処理)
For Each targetPara In ActiveDocument.Paragraphs
‘ 処理…
Next targetPara
これは英語の直訳そのままで、「アクティブな文書の中にあるすべての段落(Paragraphs)の中から、ひとつずつ(targetPara)取り出して処理しなさい」という命令です。文書が何ページあろうと、最後の行まで自動でロボットが巡回してくれます。
② `Shading.BackgroundPatternColor` (プロパティの書き換え)
targetPara.Shading.BackgroundPatternColor = wdColorAutomatic
これが今回のメインの魔法です。段落が持つ「網掛け・背景色(Shading)」のプロパティに対し、「自動(wdColorAutomatic=実質的な色なし)」を指定することで、強制的にベタ塗りや網掛けを剥ぎ取ります。
③ `Application.ScreenUpdating = False` (プロの高速化テクニック)
マクロの実行中、Wordは親切心から「画面を1行ずつ書き換えよう」とします。これが処理を重くする原因です。あらかじめ画面の更新をストップ(`False`)し、一瞬で裏で処理を終わらせてから画面を再開(`True“)させることで、爆発的なスピードアップを実現しています。実務で大量の文書を扱う際には必須のテクニックです。
—
4. マクロの使い方の手順(超初心者向け)
「VBAって難しそう……」という方のために、動かすまでの手順をステップ・バイ・ステップで解説します。
1. Wordを開く
クリーンアップしたい文書を開いた状態で、キーボードの `Alt` + `F11` キーを押します。これでVBAの開発画面(VBE)が開きます。
2. 標準モジュールの挿入
上部メニューの [挿入] > [標準モジュール] をクリックします。真っ白なエディタ画面が表示されます。
3. コードの貼り付け
先ほどのコード(`Sub ClearParagraphShading() 〜 End Sub`)を、その真っ白な画面にそのまま貼り付けます。
4. 実行する
画面上部にある再生ボタン(緑色の三角のアイコン ▷)を押すか、コードの中にカーソルを置いた状態で `F5` キーを押します。
たったこれだけで、文書内のすべての段落背景色が綺麗にクリアされ、見慣れたクリーンな文書に生まれ変わります!
—
5. 陥りやすいエラーと注意点
初心者が最初にハマりがちなポイントと、その対策も頭の片隅に入れておきましょう。
- 「保存できない」と言われたら?
マクロを含んだWord文書を保存する場合、ファイル形式を通常の「.docx」ではなく、「Word マクロ有効文書(.docm)」にする必要があります。保存時のファイル形式に注意してください。
- テーブル(表)の中はどうなるの?
Wordのテーブル内のセルも「段落」を含んでいます。そのため、このマクロを実行すると、表の中の背景色もクリアされてしまいます。「表のデザインだけは残したい!」という場合は注意が必要です(表の網掛けを残す高度な分岐処理については、またの機会にお話ししましょう)。
—
まとめ
今回は、段落の背景色を一括クリアするクリーンアップマクロを通じて、「オブジェクトの巡回(For Each)」と「プロパティの操作」というWord VBAの最も基礎的で強力な概念を学びました。
ここをマスターすれば、フォントサイズの統一や、不要な網掛け・下線の削除など、あらゆるレイアウト調整を自動化する応用力が身につきます。
手作業のイライラから解放され、スマートに仕事を終わらせる快感をぜひ味わってみてください。あなたのWord VBAライフを、心から応援しています!
