搜索所有打开的文档,查找文本,并删除到文档Word宏的末尾

时间:2012-10-29 18:41:57

标签: vba loops ms-word documents

我正在尝试编写一个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

1 个答案:

答案 0 :(得分: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
相关问题