0

連続している場合、新しい行をすべて削除する必要があります。Excel のマクロは知っていますが、Word では知っていません。行全体の値を読み取るにはどうすればよいですか?

これでドキュメントのすべての行を読みました:

For i = 1 To 10
    Selection.MoveDown Unit:=wdLine, Count:=1
Next i

各行を読み取る他の方法や、これを for に入れるために単語の合計行を知る方法はありますか?

ありがとう

4

1 に答える 1

1

が連続している場合は改行をすべて削除する必要があります

各空白行は実際には段落であるため、次のようになります。

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

単語の正規表現

于 2013-07-29T15:46:50.583 に答える