首页 > 解决方案 > 如何在 VBA 中从 Word 文档的开头查找特定关键字?

问题描述

我正在使用 Word VBA。我想从文档的开头找到一个特定的关键字“MyTest”,然后重复直到找到所有匹配项。怎么做?

我使用宏记录,并得到以下代码:

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "MyTest"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute

这似乎只是从当前位置开始查找并且会返回关键字的一个实例?

标签: vbaautomationms-wordfinddocument

解决方案


宏记录器不会为您提供最佳代码,因为它只能记录您在屏幕上所做的事情。这意味着它始终适用于Selection对象,即您在屏幕上选择的任何内容。

相反,您应该使用Range设置为您要使用的文档部分的对象。除非您正在使用,否则您ReplaceAll还需要重复执行,Find直到找到所有匹配项。

以下是您可以修改的通用例程。

Sub FindSomeTextAndDoSomething(textToFind As String)
  Dim findRange As Range
    
  Set findRange = ActiveDocument.Content
    
  With findRange.Find
    .ClearFormatting
    .Text = textToFind
    .Replacement.Text = ""
    .Wrap = wdFindStop
    .Format = False
    Do While .Execute = True
      'add code here to do something with the found text
      'collapse range to continue
      findRange.Collapse wdCollapseEnd
    Loop
  End With
End Sub

推荐阅读