「【コード】特許明細書の段落番号の直後に半角スペースを4つ挿入するWordマクロ(その4)」の続きです。
今回はワイルドカードを用いて検索と置換をしてみます。
考え方としては、前回の記事と同じで、
- 段落番号の直後に4つの半角スペースを追加する
- 段落番号の直後に5つ以上の半角スペースが挿入されている箇所を4つに修正する
という流れにします。
<目次>
このマクロでできること
前回の記事と同じです。
実行前
赤矢印のように半角スペースがない箇所があると想定します。
実行後
マクロの解説
ワイルドカードを使ってマクロの記録をすると、今回のベースになっているコードを取得できます。
「1.段落番号の直後に4つの半角スペースを追加する」の処理を例にして、マクロの記録でのコードの取得方法を簡単に説明します。
[マクロの記録」機能をオンにして、以下のように[検索と置換]ダイアログボックスに設定します。
検索する文字列:(\[[0-9]{4}\]) 置換後の文字列:\1____
置換後の文字列に記載されている4つのアンダースコアは半角スペース4つを意味しています。
カーソルを文書の先頭に置くことを忘れないように。また、上記赤枠で囲まれた[ワイルドカードを試用にする]をオンにしてください。
上記の状態で[すべて置換]ボタンをクリックしてマクロの記録を終了します。
これまでに使ってきたコードとの主な違いは、[ワイルドカードを使用する]オプションがオン(True)になっていることです。
これが取得したコードに反映されます。
.MatchWildcards = True
となるわけです。
そして記述の順番も変わります。
前回までのコードでは、
.MatchWildcards = False .MatchFuzzy = False
となっていましたが、今回は
.MatchFuzzy = False .MatchWildcards = True
となっています。違いがわかりますか?順序が違います。
検索のオプション項目でオン(True)にする項目は一番最後に書くと覚えてください。
2つ目の処理では、以下のように検索と置換を設定します。段落番号の直後に5つ以上の半角スペースが連なっている箇所を4つの半角スペースに置換します。
検索する文字列:(\[[0-9]{4}\])[ ]{5,} 置換後の文字列:\1____
ワイルドカードの記述方法についての説明は割愛しますが、この書き方で段落番号の後に半角スペースを4つ挿入できます。
お試しください。
マクロ
Sub 段落番号の直後に半角スペースを4つ挿入するWordマクロ5() 'カーソルを文書の先頭に移動 Selection.HomeKey Unit:=wdStory '半角スペースを4つ挿入する Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "(\[[0-9]{4}\])" .Replacement.Text = "\1 " .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 Replace:=wdReplaceAll '半角スペースの数を4つに調整する Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "(\[[0-9]{4}\])[ ]{5,}" .Replacement.Text = "\1 " .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 Replace:=wdReplaceAll End Sub