如何从 VBA 中的 Word 文档的开头查找特定关键字?
How to Find a Specific Keyword from the beginning of the Word Document in VBA?
我正在使用 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
这似乎只从当前位置开始查找,并且 return 关键字的一个实例?
宏录制器不会给你最好的代码,因为它只能录制你在屏幕上所做的事情。这意味着它始终适用于 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
我正在使用 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
这似乎只从当前位置开始查找,并且 return 关键字的一个实例?
宏录制器不会给你最好的代码,因为它只能录制你在屏幕上所做的事情。这意味着它始终适用于 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