本日のWordマクロセミナー(プログラミング編)をご受講いただいた方から、連続する空の段落を削除するマクロのリクエストをいただきましたので作成してみました。
海外からの書類に空の段落が連続して入りすぎているとのことで、一括で削除できたらいいなとのことでした。
セミナーでもマクロの記録を用いて作ってみました。マクロの記録では、Selectionオブジェクトのコードを取得できます。今回の記事では、Selectionオブジェクトを用いたマクロをRangeオブジェクトに書き換えたものを紹介します。
このマクロでできること
実行前
実行後
マクロの解説
ワイルドカードを用いて、2回以上連続する段落記号を1つの段落記号に置き換えています。
検索する文字列は [^13]{2,} としましたが、^13{2,} でもかまいません。
ワイルドカードを用いて改行記号を検索する場合には、^13 です。改行記号が2回以上続く場合なので、繰り返し回数を {2,} と定義しています。
マクロ
Sub 空の段落を削除() Dim myRange As Range Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "[^13]{2,}" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True .Execute Replace:=wdReplaceAll DoEvents End With Set myRange = Nothing End Sub