Wordマクロでワイルドカードを使うときの注意

Pocket

Wordのマクロでワイルドカードを使って検索、置換をしようとしたところエラーが出ました。

Sub replace_test()
    With Selection.Find
        .Text = "あけまして*ございます"
        .Replacement.Text = ""
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

エラーメッセージは次の通り。

MatchPhrase、MatchWildcards、MatchSoundsLike、MatchAllWordForms、MatchFuzzyパラメータは、同時にTrueに設定することができません。

Wordで検索、置換をするときはいろいろなオプションがあります。
文書を直に検索、置換するときは矛盾するオプションは選べないようになっていますが、マクロで使うときには正しく設定しないとエラーになります。
例えば、ワイルドカード検索とあいまい検索はどちらが優先するのか、はっきりしないのでエラーになるようです。

ところで、ここで登場した5個のオプションの意味は次の通りです。どれもTrueかFalseを設定します。

MatchPhrase 単語間のすべての空白文字および制御文字が無視されます。
MatchWildcards 検索する文字列にワイルドカードが含まれている場合、このプロパティの値は True です。
MatchSoundsLike True に設定すると、検索文字列に類似した単語が検索対象となります。
MatchAllWordForms True に設定すると、検索文字列のすべての活用形が検索対象となります。
MatchFuzzy True に設定すると、検索時に日本語の文字列のあいまい検索オプションが使用されます。

そこで、MatchWildcardsだけにTrueをセットし、その他はFalseをセットしました。

Sub replace_test()
    With Selection.Find
        .Text = "あけまして*ございます"
        .Replacement.Text = ""
        .MatchPhrase = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .MatchFuzzy = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

しかしこれでも同じエラーが出ます。
セットする順序が影響するようです。

Sub replace_test()
    With Selection.Find
        .Text = "あけまして*ございます"
        .Replacement.Text = ""
        .MatchPhrase = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .MatchFuzzy = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

順序を変えてMatchWildcardsを最後にしてみたところ正しく動作しました。

関連記事

[ 2011年11月15日 | カテゴリー: Word | タグ: , ]

« | »

コメント

  1. […] なお「MatchPhrase、MatchWildcards、MatchSoundsLike、MatchAllWordForms、MatchFuzzyパラメータは、同時にTrueに設定することができません」。 マクロでワイルドカードを使うときの注意 | You Look Too Cool […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報