Word内に特定の文字列が含まれていると色付けして教えてくれるマクロ


目的

某文章指導での採点業務で活用するために作成しました.

仕様

特定の文字列が含まれてい場合,その文字列の色を変えてくれる(今回は青く変えてくれる)ものです
したがって,こちらで指定した文字列が文章に多く含まれていれば,その文章は真っ青になります

参考にしたサイト

今回マクロを作りにあたりこのページを参考にさせて頂きました.

準備

まずマクロのざっくりとした仕組みとして
特定の文字列を設定する用のワードファイル<キーワードファイル>
特定の文字列が含まれているのか,点検したい文章が書かれているワードファイル<点検ファイル>
を見比べ,<点検ファイル>内の文字列に色を塗る方針をとっています.

<キーワードファイル>の作成

<キーワードファイル>はn行1列の表に任意の文字列を書き込みます.書き込んだ各行内の文字列がキーワードとして認識されます.

マクロの設定

普段ワードでマクロを使う人はそんなにいないのではないかと思います.(エクセルのマクロとほぼ同じです.)
ワード,マクロ,使い方等で調べてみてください,ワードのリボンに「開発」というタブが追加されれば大丈夫かと思います.

マクロの中身

以下の関数をワードマクロに登録します.(私自身ワードマクロ初学者のため勉強の意味も込めて,各行の意味をコメントで添えています.間違っていたら申し訳ないです.)

Sub keywordchecker() 'マクロの名前
Dim f1row As row  '表の一行
Dim f1rowALL As Rows  '表全体
Dim target As Range  '対象の文章
'winNo = Windows.Count '開いているウインドウの数に対応

With Selection '選択している部分の話をしていますという意味(判定したいファイルでの話)
Set f1rowALL = Windows(1).Document.Tables(1).Rows 'Windows(x)のxは開いているウィンドゥの番号.開いた順番に番号が振られる.キーワードファイルを最初に開くのはWin(1)に割り振るため.
For Each f1row In f1rowALL '選択しているファイルの各行を見る
Set target = f1row.Cells(1).Range '表の1列めを範囲にする(今回表は1列しかないので,カッコ内を2以上にするとエラー)
target.MoveEnd Unit:=wdCharacter, Count:=-1  '表の各セル内の言葉を最後の一文字まで選択

With Selection.Find 'カーソル位置以降(Selection以降)をWordの検索機能で検索
.ClearFormatting '
.Wrap = wdFindStop '検索が文書の末尾(または先頭)に到達したときの挙動を設定するプロパティ.到達したらストップします.
.Text = target.Text  '検索窓にKeyword内のテキストを代入してるイメージ
.MatchByte = True  '半角と全角の区別
.MatchCase = True  '大文字と小文字の区別
.MatchPhrase = False '空白文字を無視
.MatchWholeWord = True '表内のキ―ワードと完全一致

.Replacement.Font.ColorIndex = wdBlue  'ここで色変更可能
.Execute Replace:=wdReplaceAll '「すべて置換」を実行
End With
Next
End With
End Sub

'以下,変更後のフォント設定などで使えそうなものをメモしました
'wdAuto 自動設定。通常の既定値は黒です。
'wdBlack 黒
'wdBlue 青
'wdBrightGreen 明るい緑
'wdByAuthor 文書の作成者が定義した色
'wdDarkBlue 濃い青
'wdDarkRed 濃い赤
'wdDarkYellow 濃い黄
'wdGray25 網かけ 25 の灰色
'wdGray50 網かけ 50 の灰色
'wdGreen 緑
'wdNoHighlight 適用されている強調表示を解除します。
'wdPink ピンク
'wdRed 赤
'wdTeal 青緑
'wdTurquoise 水色
'wdViolet 紫
'wdWhite 白
'wdYellow 黄

使い方

まず,<キーワードファイル>を開きます.(上のマクロをそのまま使うなら絶対に)

続いて,<点検ファイル>を開きます.
<点検ファイル>内の文章先頭にカーソルを持っていき,上のマクロを実行するとキーワードが青くなるはずです.

 

左<キーワードファイル>→右<点検ファイル>の順に開いて・・・

↓マクロを実行すると

<点検ファイル>内のキーワードが青くなりました!

注意

上の画像の通り,「齊藤京子」というキーワードに対して<点検ファイル内の>「齋藤京子」は完全一致していないので青く塗られませんでした.
しかし,例えばアニマル浜口さんの娘である浜口京子さんを対象にしたつもりで「京子」というキーワードを入れていると「齊藤京子」に含まれる「京子」も青く塗られてしまいます.
この例のように,あまりに短いキーワードや混同しやすいキーワードの設定には注意が必要です
また,マクロは「Ctrl+Z」の後戻りが効かないことで有名です.元のファイルに上書きしないよう,コピーを取ってからマクロを実行することをおススメします.

おわりに

「齋藤」と「齊藤」の書き間違いや「菊地」と「菊池」の書き間違いなどを漏れなく点検するにはうってつけでした.
一方,どこまでをキーワードとするかは頭を悩ませます.ほどほどに活用してもらえればと思います.