複数の文字列の置換を一括でするマクロ(Word)

1.このマクロの機能

・「子供→子ども」のように任意の文字列の置換を行う。複数の文字列の置換が一括でできる。
・任意の文字にマーカーを引く。例えば、「事→こと」の置換はしたいが「事件」は「こと件」に置換されると困る、といった場合のための機能。「事」にマーカーを引き、その部分を置換するかしないかは手作業で行いたい人向け。

2.マクロファイルの作成方法

(1) Wordの新規ファイル作成
(2)「開発」タブ→「Visual Basic」をクリック
(3)左ウィンドウにある「ThisDocument」をダブルクリック(右側に何も入力されていないウィンドウが開く)
(4)下記コードを入力

'引数の単語をハイライト
Function highlight(ByVal word As String)
 Dim range As range
 Set range = ActiveDocument.range(0, 0)

 With range.Find
   .Text = word
   .Forward = True
   .Format = False
   .MatchWholeWord = True     '完全に一致する単語だけを検索する
   .MatchByte = True          '半角と全角を区別する
   .MatchCase = True          '大文字と小文字の区別する

   Do While .Execute = True
     range.HighlightColorIndex = wdYellow
   Loop
 End With
End Function
'置換
Function replaceWord(ByVal f As String, ByVal t As String)
 Selection.Move wdStory, -1

 With Selection.Find
     .MatchWholeWord = True     '完全に一致する単語だけを検索する
     .MatchByte = True          '半角と全角を区別する
     .MatchCase = True          '大文字と小文字の区別する
     .Text = f
     .Execute Replace:=wdReplaceAll, replacewith:=t
 End With
End Function

Sub 置換とマーカー()
 '画面の更新オフ
 Application.ScreenUpdating = False


 Dim workView As View
 Set workView = Documents(1).ActiveWindow.View
 Dim isRevisionsDisp As Boolean


 isRevisionsDisp = workView.ShowRevisionsAndComments
 workView.ShowRevisionsAndComments = False


 highlight "事"
 
 

 replaceWord "子供", "子ども"


 '全ての処理終了後、画面の更新オン
 Application.ScreenUpdating = True

 workView.ShowRevisionsAndComments = isRevisionsDisp

 MsgBox "チェック完了しました。"
End Sub

Private Sub Document_New()

End Sub

(5)置換する文字列の入力
上記コードは

replaceWord "子供", "子ども"

↑この部分のコードが「子供→子ども」の置換を指定する部分。
他にも置換したい文字列があるなら、↓のように追記する(ここでは「様々→さまざま」の置換を追加)
※追加したい文字列がいっぱいある場合、「replaceWord "【任意の文字列】", "【置換後の文字列】"」の入力が面倒だと思う。この作業の簡略化方法は「4.コード入力の簡略化」に記載した

replaceWord "子供", "子ども"
replaceWord "様々", "さまざま"

(6)マーカーを引く文字列の入力
↓の部分が「事」にマーカーを引く指定をする部分。

 highlight "事"

他にもマーカーを引きたい文字列があるなら、↓のように追記する(ここでは「様」を追加)。
※追加したい文字列がいっぱいある場合、「highlight "【任意の文字列】"」の入力が面倒だと思う。この作業の簡略化方法は「4.コード入力の簡略化」に記載した

 highlight "事"
 highlight "様"

(7)「ファイル」→「(文書1)の上書き保存」をクリック
(8)「ファイル名」は任意の文字列を入力(ここでは仮に「自動変換」とする)、「ファイルの種類」は「Wordマクロ有効テンプレート(*.dotm)を選択
(9) ファイルの保存場所は任意のフォルダを選択(7→6の順でやってファイルが行方不明になった場合は「ドキュメント\Officeのカスタムテンプレート」にある可能性が高い)
(10)「保存」をクリック
これで「変換.dotm」が作成される

3.マクロファイルの使用方法

(1)一括変換したいWord文書を開く
(2)「校閲」タブ→「変更履歴の記録」をオンにする
※どこが置換されたのか分からなくてもいい人は2を省略してOK。最初のうちはオンにしておいた方が無難だと思います。
(3)「開発」タブ→「Wordアドイン」をクリック
(4)「テンプレートとアドイン」ウィンドウの「追加」をクリックし、作成したマクロファイルを選択→「OK」クリックで「テンプレートの追加」ウィンドウを閉じる
(5)「アドインとして使用できるテンプレート」欄に追加された「自動変換.dotm」にチェックを入れて「OK」をクリック
(「セキュリティの警告」が表示されたら「コンテンツの有効化」をクリック)
(6)「開発」タブ→「マクロ」をクリック
(7)「マクロ」ウィンドウの「置換とマーカー」を選択して「実行」をクリック
これで置換とマーカー引きが一括でできるはず

4.コード入力の簡略化

Excelの関数を使ってコードを作る。

<文字列置換のコード>
下記のとおりに各セルを入力
A2セル: replaceWord "
C2セル:", "
E2セル:"

B2セルから下:置換前の文字列
D2セルから下:置換後の文字列

F2セル:=CONCATENATE(A$2,B2,C$2,D2,E$2)
F3セルから下:F2セルをコピペ

画像1

全て入力できたら、
F列を全て選択しコピー(Ctrl+C)、G列を全て選択して「形式を選択して貼り付け」(Ctrl+Alt+V)→「値(V)」を選択して「OK」をクリック

画像4

G2セルから下を全て選択してコピーし、コードにペーストする

画像2


<マーカー引き>
下記のとおりに各セルを入力
A2セル: highlight "
C2セル:"
B2セルから下:マーカーを引く文字列

D2セル:=CONCATENATE(A$2,B2,C$2)
D3セルから下:D2セルをコピペ

全て入力できたら、
D列を全て選択しコピー(Ctrl+C)、E列を全て選択して「形式を選択して貼り付け」(Ctrl+Alt+V)→「値(V)」を選択して「OK」をクリック

E2セルから下を全て選択してコピーし、コードにペーストする

この記事が気に入ったらサポートをしてみませんか?