Wordマクロ(VBA)で文字列の置換をする場合には次のように書きますが、Findのプロパティが色々あって分かりにくいので使いそうなものについて調べてみました。
Word2013で確認しました。
kensaku = "検索文字列"
chikan = "置換文字列"
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = kensaku
.Replacement.Text = chikan
.Wrap = wdFindContinue
.MatchAllWordForms = False
.MatchByte = False
.MatchCase = False
.MatchFuzzy = False
.MatchPhrase = False
.MatchSoundsLike = False
.MatchWholeWord = False
.MatchWildcards = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
MatchAllWordForms
検索と置換ダイアログの「英単語の異なる活用形も検索する」に相当します。
Trueにすると、英単語の活用形も含めて置換します。例えば「good」を「bad」に置換する場合、「good, better, best」は「bad, worse, worst」になります。
MatchByte
検索と置換ダイアログの「半角と全角を区別する」に相当します。
Trueにすると全角と半角を区別します。
MatchCase
検索と置換ダイアログの「大文字と小文字を区別する」に相当します。
Trueにすると大文字小文字を区別します。
MatchFuzzy
検索と置換ダイアログの「あいまい検索(日)」に相当します。
Trueにすると、ひらがなとカタカナを区別せずに置換したり、漢字の異体字を区別せずに置換したりします。例えば「かえる」を「うさぎ」に置換する場合、「かえる、カエル」は「うさぎ、うさぎ」になります。また「浜」を「海」に置換する場合、「浜、濱」は「海、海」になります。
これは検索と置換ダイアログで「あいまい検索(日)」の下の「オプション」をクリックしたときに表示される「あいまい検索」ダイアログにおける設定が適用されます。例えば「漢字表記のゆれ(異体字)」のチェックを外すと「浜」が置換され「濱」は置換されません。
MatchPhrase
Trueにすると、スペースやタブや改行を無視して置換します。例えば「きのう」を「あした」に置換する場合、「きのう」、「き の う」、「き の う」などが「あした」になります。
MatchSoundsLike
検索と置換ダイアログの「あいまい検索(英)」に相当します。
trueにすると、発音が同じ英単語も含めて置換します。例えば「right」を「left」に置換する場合、「write, right」は「left, left」になります。
MatchWholeWord
検索と置換ダイアログの「完全に一致する単語だけを検索する」に相当します。
Trueにすると、英単語として一致する場合だけ置換します。英語のように単語の前後にスペースを空ける場合に意味があります。
例えば「dog」を「cat」に置換する場合、「hot dog」は「hot cat」になりますが「hotdog」は置換されません。
Falseにするとスペースの有無に関わらず置換されます。
検索する文字列が全角の場合は意味がないようです。Falseと同じ動作をします。
MatchWildcards
検索と置換ダイアログの「ワイルドカードを使用する」に相当します。
Trueにすると、検索する文字列をワイルドカードがあるものとして置換します。例えば「第*会議室」を「部屋」に置換する場合、「第1会議室」や「第三会議室」は「部屋」になります。
Falseにすると、検索する文字列を通常の文字列として置換します。例えば「第*会議室」を「部屋」に置換する場合、「第1会議室」などは置換されず、「第*会議室」だけが「部屋」になります。
なお「MatchPhrase、MatchWildcards、MatchSoundsLike、MatchAllWordForms、MatchFuzzyパラメータは、同時にTrueに設定することができません」。
Wordマクロでワイルドカードを使うときの注意 | You Look Too Cool
コメント