複数の文字列の置換を一括でするマクロ(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セルをコピペ
全て入力できたら、
F列を全て選択しコピー(Ctrl+C)、G列を全て選択して「形式を選択して貼り付け」(Ctrl+Alt+V)→「値(V)」を選択して「OK」をクリック
G2セルから下を全て選択してコピーし、コードにペーストする
<マーカー引き>
下記のとおりに各セルを入力
A2セル: highlight "
C2セル:"
B2セルから下:マーカーを引く文字列
D2セル:=CONCATENATE(A$2,B2,C$2)
D3セルから下:D2セルをコピペ
全て入力できたら、
D列を全て選択しコピー(Ctrl+C)、E列を全て選択して「形式を選択して貼り付け」(Ctrl+Alt+V)→「値(V)」を選択して「OK」をクリック
E2セルから下を全て選択してコピーし、コードにペーストする
この記事が気に入ったらサポートをしてみませんか?