MS-WORD マクロ 空の段落を取る | 虫と花 人と鳥

虫と花 人と鳥

スピリチュアルが好きで関心のあるものにレンズを向けます。ようやく人って面白いなと思い始めています。神々の皆様、背後霊そして周囲の全てに感謝を捧げます。ありがとうございます。


MS-WODのマクロで空の段落を取ろうとして、ネットで検索するとそれなりの答えが得られる。

Sub 空段取る改良前()
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^13{2,}"
.Replacement.Text = "^p"
.Forward = Frd
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.MatchByte = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub



しかしながら、これでは文書の最初行/最終行に空の段落がある場合、それを取り除くことができない。

で、改良してみた。

Sub 空段取る()
Dim NB As Long

With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^13{2,}"
.Replacement.Text = "^p"
.Forward = Frd
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.MatchByte = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

'ファイル最初行の空段落を取る
If (ActiveDocument.Paragraphs(1).Range.Text = vbCr) Then
ActiveDocument.Paragraphs(1).Range.Delete
End If

'ファイル最終行の空段落を取る
NB = ActiveDocument.Paragraphs.Count
If (ActiveDocument.Paragraphs(NB).Range.Text = vbCr) Then
ActiveDocument.Paragraphs(NB).Range.Delete
End If

End Sub