【Word VBA】特許明細書の段落番号の直後に半角スペースを4つ挿入するWordマクロ(その5)

2020年4月14日

【コード】特許明細書の段落番号の直後に半角スペースを4つ挿入するWordマクロ(その4)」の続きです。

今回はワイルドカードを用いて検索と置換をしてみます。

考え方としては、前回の記事と同じで、

  1. 段落番号の直後に4つの半角スペースを追加する
  2. 段落番号の直後に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

関連記事

【コード】特許明細書の段落番号の直後に半角スペースを4つ挿入するWordマクロ(その4)

【まとめ】ワイルドカード(正規表現)に関する記事一覧

-コード
-, , ,