Wordで一括置換と同時に書式変更や蛍光ペンをひきたいときはないでしょうか。
例えば一括置換した場所を確認したり、太字にして強調表示に変更したいときなどです。
そんなときに悩ませることは、
・Wordで一括置換と同時に書式変更や蛍光ペンをひくことを手作業でなく一括で処理したいが方法がわからない。
ですね。
今回はそんなお悩みを解決する、
Word VBAを使い、Wordドキュメント内の一括置換と同時に書式変更や蛍光ペンをひいて、さらに文字サイズ変更や蛍光ペンの色を変更する方法
についてまとめます。
もくじ
Word VBAで一括置換と同時に書式変更や蛍光ペンをひくイメージ
前回の「である調」へ一括変換する方法に書式変更や蛍光ペンをひくことを含める形となります。
VBAとサンプルドキュメントはこちらを参考に用意します。
「である調」へ一括変換する「ですます調」の文章が記載されたWordドキュメントを用意します。
「ですます調」と「である調」のパターンが記載されているCSVファイルを用意します。
CSVファイルを設定したVBAをWordへ実装しVBAを実行すると、
「ですます調」から「である調」へ一括変換されると同時に蛍光ペンでハイライト表示され、さらに書式が太字、イタリックへ変換されます。
さらにさらに蛍光ペンの色を変えたり、
文字サイズを変更したりすることもできます!
カンタンですね。
早速使ってみましょう。
サンプルのWordドキュメント、置換対象リストを準備する
以下の記事を参考にサンプルのWordドキュメント、置換対象リストとVBAを準備しましょう。
Wordドキュメントを準備する
「である調」へ一括変換する「ですます調」の文章が記載されたWordドキュメントを用意します。
できたら、任意の場所へ保存します。
「ですます調」と「である調」のパターンが記載されているCSVファイルを用意する
こちらの記事を参考に、文字コードをShift-JISにしたCSV形式で保存します。
複数の文字列を置換し蛍光ペンをつけるVBA
VBAを実装する
続いてWordのVisual Basic EditorへVBAを実装しましょう。
今回のVBAは前回の置換処理にまずは蛍光ペンをつける処理を加えています。
実装にあたり、変更頂きたい箇所は以下です。
・置換リストファイルを指定する
置換リストを格納したパスに書き換えをお願いします。
csvFilePass = “C:\Users\****\Documents\****\である変換.csv”
VBAソースコードは以下の通りです。
Sub 複数の文字列を置換_置換後の書式を変更()
Dim csvFilePass
Dim strBuf As String
Dim tmp As Variant
'置換リストファイルを指定します。
csvFilePass = "C:\Users\****\Documents\****\である変換.csv"
Open csvFilePass For Input As #1
'CSV内の行数分置換処理を繰り返します。
Do Until EOF(1)
'1行分のデータを読み込みます。
Line Input #1, strBuf
'文字列を","で分割します。
tmp = Split(strBuf, ",")
'検索・置換の設定をおこないます。
With Selection.Find
.Format = True 'フォーマット変更を有効する(True)、有効にしない(False)を設定します。
.ClearFormatting '検索条件から書式を削除します。
.Replacement.ClearFormatting '置換対象の書式を削除します。
.Replacement.Highlight = True '置換対象を蛍光ペンで着色します。
.Replacement.Font.Italic = False '置換対象の書式をイタリックにします。
.Replacement.Font.Bold = False '置換対象の書式を太字にします。
.Text = tmp(0) '検索ワードを代入します。
.Replacement.Text = tmp(1) '置換ワードを代入します。
.Forward = True '文書に対して末尾の方向(順方向)に検索します。
.Wrap = wdFindContinue '先頭(または末尾)に戻って検索をします。
.MatchCase = True '英語の大文字と小文字の区別する(True)、区別しない(False)を設定します。
.MatchWholeWord = False '単語全体を検索対象としない設定にします。
.MatchByte = False '半角と全角を区別する(True)、区別しない(False)を設定します。
.MatchAllWordForms = False '英単語の異なる活用形検索を有効する(True)、有効にしない(False)を設定します。
.MatchWildcards = False 'ワイルドカード(?*など任意の文字)を使った検索を有効する(True)、有効にしない(False)を設定します。
.MatchSoundsLike = False '誤った置換を防止するため、英語のあいまいな検索はOFFにします。
.MatchFuzzy = False '誤った置換を防止するため、日本語のあいまいな検索はOFFにします。
End With
'置換を実行(全て置換)します。
Selection.Find.Execute Replace:=wdReplaceAll
Loop
Close #1
MsgBox "置換が完了しました。"
End Sub
実装手順は以下の通りです。
①Wordを新規に開き、「開発」タブをクリックし、
「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインの「Nomal」を右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
早速VBAの実行をしてみましょう。
①「開発」タブの「マクロ」をクリックし「複数の文字列を置換_置換後の書式を変更」を選択し、「実行」をクリックします。
②「置換が完了しました。」が表示されたら、
置換されていることを確認します。
変更前
変更後
はい!
置換と同時にハイライト表示されていますね!
VBAの説明
置換処理の説明についてはこちらの記事の説明をご参照ください。
今回追加した箇所は、Findメソッドの置換処理対象Replacementの蛍光ペンを意味するHighlightプロパティとなります。
「True」を指定することにより置換対象を蛍光ペンで着色する内容となります。
色はデフォルトの黄色となります。
色の変更もできますので、後半に説明をします。
複数の文字列を置換し書式変更(イタリック、太字)するVBA
置換処理、蛍光ペン着色に加え書式変更(イタリック、太字)をする処理を加えていきます。
実装にあたり、変更頂きたい箇所は以下です。
.Replacement.Font.Bold = True ‘置換対象の書式を太字にします。
Findメソッドの置換処理対象ReplacementのFontプロパティを追加します。
「Italic」プロパティは「True」にすると置換対象の書式をイタリックにし、
「Bold 」プロパティは「True」にすると置換対象の書式を太字にします。
サンプルコードの上記値を「True」に変更して実装し実行してみましょう。
はい、書式がイタリックの太字になりましたね!
複数の文字列を置換し蛍光ペンの色を変え、着色するVBA
置換処理、蛍光ペンの色をかえて着色する処理を加えていきます。
追加頂きたいコードは以下です。
DefaultHighlightColorIndexに対して色をしてします。
指定できる代表的な色は
こちらに出ている黄色、緑色、水色、ピンク色になります。
Options.DefaultHighlightColorIndex = wdBrightGreen ‘蛍光ペン色:緑
Options.DefaultHighlightColorIndex = wdTurquoise ‘蛍光ペン色:水色
Options.DefaultHighlightColorIndex = wdPink ‘蛍光ペン色:ピンク
好きな色を選択して設定してみてください。
追加する場所は、
With Selection.Find
の上あたりとなります。
サンプルではピンクを選択しました。
実装し実行してみましょう。
はい、蛍光ペンの色がピンクになりましたね!
複数の文字列を置換し文字サイズを変更するVBA
置換処理と同時に文字サイズを変更する処理を加え、
標準のフォントサイズより大きくしてみます。
追加頂きたいコードは以下です。
Findメソッドの置換処理対象ReplacementのFont.Sizeプロパティを追加します。
サイズは20ポイントとしています。
追加する場所は
の下あたりが良いでしょう。
実行してみましょう。
はい、文字サイズが大きくなりましたね!
さいごに
いかがでしょうか。
今回は、
Word VBAを使い、Wordドキュメント内の一括置換と同時に書式変更や蛍光ペンをひいて、さらに文字サイズ変更や蛍光ペンの色を変更する方法
についてまとめました。
今回のVBAと置換リストをうまく活用すれば、短期間で処理ができるので、ぜひ活用いただければと思います。
コメントを残す