前回の記事「【コード】特許明細書の段落番号の直後に半角スペースを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