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

2020年3月5日

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

前回のマクロでは余分なスペースを削除するのにループで処理する仕組みを紹介しました。

実はループ処理をするまでもなく余分なスペースを削除する方法もあるのでこちらも紹介します。

「最初からそれを出してよ」、という感じですが(笑)、手を動かしながら考えるのは重要だと思うので、小出しにしています。

あと、ひとまずは動けばいいので、不具合が出ない分には前回のマクロで十分です。処理時間もそれほどかかりませんし。

今回のマクロは、Wordの検索用の特殊文字の使い方を応用しました。

このマクロでできること

実行前

赤矢印のように半角スペースがない箇所があると想定します。

実行後

マクロの解説

前半の、半角スペースの挿入箇所は「その3」と同じなのですが、余分なスペースを処理する方法が異なります。

今回は、検索で使える特殊文字を利用します。

かつての記事「【Word】改行の前の半角スペースを一括削除する方法(その2)」で紹介した「^w」を利用します。

上記の記事でも紹介したとおり、「^w」は半角と全角のスペース(連続する複数のスペースも含む)を対象にします。

(のちに追記)
角括弧の後に5つ以上の半角スペースがある箇所を探す検索条件です。
検索する文字列:]____^w
※_は半角スペース。上記では「半角スペース4つ+任意のスペース」を検索

なので、段落番号の直後にある「半角スペース5つ以上」を「半角スペース4つ」に一括で置換して処理します(29行目と30行目)。

これでめでたく半角スペースの数を4つにそろえられます。

マクロ


Sub 段落番号の直後に半角スペースを4つ挿入するWordマクロ4()

 'カーソルを文書の先頭に移動
 Selection.HomeKey Unit:=wdStory

 '半角スペースを4つ挿入する
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = "[^#^#^#^#]"
  .Replacement.Text = "^&    "
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll

 '半角スペースの数を4つに調整する
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = "]    ^w"
    '.Text = "]^w" これは間違い
  .Replacement.Text = "]    "
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
 
End Sub

関連記事

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

【Word】改行の前の半角スペースを一括削除する方法(その2)

-コード
-, ,