連続している場合、新しい行をすべて削除する必要があります。Excel のマクロは知っていますが、Word では知っていません。行全体の値を読み取るにはどうすればよいですか?
これでドキュメントのすべての行を読みました:
For i = 1 To 10
Selection.MoveDown Unit:=wdLine, Count:=1
Next i
各行を読み取る他の方法や、これを for に入れるために単語の合計行を知る方法はありますか?
ありがとう
が連続している場合は改行をすべて削除する必要があります
各空白行は実際には段落であるため、次のようになります。
Sub RemoveBlankParas()
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
If Len(para.Range.Text) = 1 Then
'only the paragraph mark, so..
para.Range.Delete
End If
Next para
End Sub
ただし、連続する空白の段落が 2 つしかない場合ReplaceAll
は、より簡単かつ迅速に使用できます。整理できる記録されたマクロを次に示します。
Sub Macro2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^p^p"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Word の検索/置換機能は正規表現の原始的な形式を使用するため、次の例では 2 つ以上の連続する段落記号を減らします。MatchWildcards = True
正規表現を使用するための注意:
Sub Macro2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(^13)\1@"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub