3

開いているすべてのドキュメントを検索し、「DocumentEnd9999」というテキストをすべて見つけて、各ドキュメント内のそのテキストの下にあるものをすべて削除する vba ワード マクロを作成しようとしています。

Sub deletion()

Dim endTerm As String
endTerm = "DocumentEnd9999"

'Loop Dim
Dim n, c As Integer
n = Application.Documents.Count

For c = 1 To n
    Set myRange = Application.Documents(c).StoryRanges
    For Each myRange In ActiveDocument.StoryRanges
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = endTerm
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
        End With
        Selection.Find.Execute
        Selection.Extend
        Selection.Find.ClearFormatting
        With myRange.Find
            myRange.Characters.Last.Select
            .Forward = True
            .Wrap = wdFindAsk
        End With
        Application.DisplayAlerts = False
        Selection.Find.Execute
        Selection.Delete
    Next myRange
Next c

End Sub
4

1 に答える 1

0

次のコードは、ドキュメントの本文で探していることを実行する必要があります。StoryRanges を使用している理由が正確にはわかりません。私はそのコレクションにあまり詳しくないので、含めませんでした。

Sub deletion()

    Dim endTerm As String
    endTerm = "DocumentEnd9999"

    Dim n, c As Integer
    n = Application.Documents.Count
    c = 1

    Dim r As Range

    Windows(c).Activate

    Selection.Find.ClearFormatting
        With Selection.Find
            .Text = endTerm
            .Forward = True
            .Wrap = wdFindContinue
        End With

    Do

        Selection.Find.Execute    

        Set r = ActiveDocument.Range(Selection.Range.Start, ActiveDocument.Content.End)
        r.Delete

        c = c + 1

        On Error Resume Next
        Windows(c).Activate

    Loop Until c > n

End Sub
于 2012-10-30T21:09:39.917 に答える