【Word VBA】スペルチェックと文章校正対象外の範囲を着色するWordマクロ

2013年11月23日

Wordでスペルチェックや文章校正をしたときに、英語の明らかなスペルミスがあるのにチェックされなかった経験はありませんか?

以下のように、様々な理由が考えられます。

トラブルシューティング : スペルチェックや文章校正などの校正ツール

今回の記事では、その原因の1つである「スペルチェックや文章校正を行わない」がオンになっている状態を簡単に探せるマクロをご紹介します。

セミナーの受講生の方からこのテーマをいただいました。どうもありがとうございます。

「スペルチェックや文章校正を行わない」という設定

Wordには、スペルチェックや文章校正をしたときに、特定個所をチェック対象外に設定する機能があります。

不完全な文章や、俗語を含んだ文章がかかれているような部分がある場合に用います。

文頭が小文字で始まるように文章に意図的に書いている場合もそうかもしれません。

以下の方法で設定ができます。

「スペルチェックや文章校正を行わない」をオンにする方法

自分で意図的にこの設定をしていれば問題ありません。

しかし、他人からもらったWord文書に部分的にこの機能が設定されていると厄介ですね。

この設定は、ユーザー設定するスタイルにも適用できますから、社内文書でもひょっとしたら気づかずに使っていることがあるかもしれません。

このマクロでできること

本文中で、「スペルチェックや文章校正を行わない」がオンに設定されている部分があると、その部分を含む段落全体を「明るい緑」の蛍光ペンで着色します。

マクロの解説

段落ごとに、「スペルチェックや文章校正を行わない」の設定を確認します。

これは、NoProofing プロパティで設定します。

For Each ... Next ステートメントで、段落1つ1つで判定します。

工夫している点は、「スペルチェックや文章校正を行わない」が段落のうち部分的に設定されているときの判定も取り入れている点です。

   If .NoProofing = True Or _

    .NoProofing = wdUndefined Then

1つの段落中に、設定がオンになっている部分とオフになっている部分が混在しているときには、wdUndefined の値になります。

これは、蛍光ペンの色の判定でも使いました。選択範囲内で蛍光ペンの色が混在している場合には、蛍光ペンの色は、wdUndefined となります。(特定の蛍光ペンを消すマクロ)

マクロ


Sub スペルチェックと文章校正対象外の個所を着色する()

 Dim myPara As Paragraph
 
 For Each myPara In ActiveDocument.Paragraphs
  With myPara.Range
   If .NoProofing = True Or _
     .NoProofing = wdUndefined Then
    .HighlightColorIndex = wdBrightGreen
   End If
  End With
 Next myPara

End Sub

-コード
-,