----------------------------------------
この記事を新しいサイトに転記しました
----------------------------------------
ワイルドカード(Wordの正規表現)を使って検索してみます。たとえば、以下のような検索です。
このような時に時々表示されるエラーメッセージに以下のものがあります。これ何が原因か分かりますか?このようなときには、エラーメッセージを無視せずに読んでみます。ここに解決の糸口があるからです。
[置換後の文字列]に、指定できない範囲の番号が含まれています。
[置換後の文字列]と書れているので、[置換]タブをクリックして[置換後の文字列]欄に何が書かれているのか確認します。ワイルドカードで置換を使っている方なら分かるかも知れません。そうです。[置換後の文字列]欄に\2という文字があるからです。
\1や\2というのは、[検索する文字列]欄の半角括弧で囲まれた部分と連動しています。[検索する文字列]欄には半角括弧で囲まれた部分が1箇所しかありません。よって、\2に対応する箇所がないためにエラーメッセージが表示されました。
実はこのエラーはマクロを実行しても表示されます。マクロで同じように[検索と置換]ダイアログボックスを用いた処理を行った場合(Selection.Findプロパティを用いた場合)、[検索と置換]ダイアログボックスの[検索する文字列]欄の文字列がマクロの実行に影響します。
あ、このエラーは、先日の記事「【Wordマクロ】不要な改行記号を探して削除する
」で出てくるんですよね(笑)。なのでマクロ修正しておきましたから。今日の記事は、その修正の理由説明でした。
▼マクロ解説
紫色の部分を追加しました。
このようにして[検索と置換]ダイアログボックスに残っていた[置換後の文字列]欄の文字列を削除します。
めでたしめでたし。
・・・・・途中から・・・・
'検索実行
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
・・・・・途中まで・・・・
▼関連記事
【Wordマクロ】不要な改行記号を探して削除する