【Word】ワイルドカードを使うときのよくあるエラー

ワイルドカード(Wordの正規表現)を使って検索してみます。たとえば、以下のような検索です。

16-05-123

このような時に時々表示されるエラーメッセージに以下のものがあります。これ何が原因か分かりますか?このようなときには、エラーメッセージを無視せずに読んでみます。ここに解決の糸口があるからです。

16-05-121
[置換後の文字列]に、指定できない範囲の番号が含まれています。

[置換後の文字列]と書れているので、[置換]タブをクリックして[置換後の文字列]欄に何が書かれているのか確認します。ワイルドカードで置換を使っている方なら分かるかも知れません。そうです。[置換後の文字列]欄に\2という文字があるからです。

16-05-120

\1\2というのは、[検索する文字列]欄の半角括弧で囲まれた部分と連動しています。[検索する文字列]欄には半角括弧で囲まれた部分が1箇所しかありません。よって、\2に対応する箇所がないためにエラーメッセージが表示されました。

実はこのエラーはマクロを実行しても表示されます。マクロで同じように[検索と置換]ダイアログボックスを用いた処理を行った場合(Selection.Findプロパティを用いた場合)、[検索と置換]ダイアログボックスの[検索する文字列]欄の文字列がマクロの実行に影響します。

16-05-122

あ、このエラーは、先日の記事「【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

・・・・・途中まで・・・・

▼関連記事

【コード】不要な改行記号を探して削除する

トップへ戻る