3

我正在尝试编写一个 vba word 宏来搜索所有打开的文档,找到所有出现的文本“DocumentEnd9999”,并删除每个文档中该文本下方的所有内容。

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 回答