【入門編】【初心者向け】段落の「塗りつぶし色」を一括クリアして、文書の視認性を標準化するクリーンアップマクロ – Word VBA解析バイブル

スポンサーリンク

こんにちは! 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ライフを、心から応援しています!

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