ワイルドカード(Wordの正規表現)を使って検索してみます。たとえば、以下のような検索です。
このような時に時々表示されるエラーメッセージに以下のものがあります。これ何が原因か分かりますか?このようなときには、エラーメッセージを無視せずに読んでみます。ここに解決の糸口があるからです。
[置換後の文字列]に、指定できない範囲の番号が含まれています。
[置換後の文字列]と書れているので、[置換]タブをクリックして[置換後の文字列]欄に何が書かれているのか確認します。ワイルドカードで置換を使っている方なら分かるかも知れません。そうです。[置換後の文字列]欄に\2という文字があるからです。
\1や\2というのは、[検索する文字列]欄の半角括弧で囲まれた部分と連動しています。[検索する文字列]欄には半角括弧で囲まれた部分が1箇所しかありません。よって、\2に対応する箇所がないためにエラーメッセージが表示されました。
実はこのエラーはマクロを実行しても表示されます。マクロで同じように[検索と置換]ダイアログボックスを用いた処理を行った場合(Selection.Findプロパティを用いた場合)、[検索と置換]ダイアログボックスの[検索する文字列]欄の文字列がマクロの実行に影響します。
あ、このエラーは、先日の記事「【Word VBA】不要な改行記号を探して削除する 」で出ることがあるんですよね(笑)。なのでマクロ修正しておきましたから。今日の記事は、その修正の理由説明でした。
マクロ解説
5行目を追加しました。
このようにして[検索と置換]ダイアログボックスに残っていた[置換後の文字列]欄の文字列を削除します。
めでたしめでたし。
・・・・・途中から・・・・
'検索実行 Selection.Find.ClearFormatting With Selection.Find .Text = "^13" '検索する文字列 .Replacement.Text = "" '置換後の文字列(16-05-12追加) .Forward = True '検索方向 .Wrap = wdFindContinue '検索対象のオブジェクトの末尾での操作 .Format = False '書式 .MatchCase = False '大文字と小文字の区別する .MatchWholeWord = False '完全に一致する単語だけを検索する .MatchByte = False '半角と全角を区別する .MatchAllWordForms = False '英単語の異なる活用形を検索する .MatchSoundsLike = False 'あいまい検索(英) .MatchFuzzy = False 'あいまい検索(日) .MatchWildcards = True 'ワイルドカードを使用する End With Selection.Find.Execute
・・・・・途中まで・・・・