vba - 如何在 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
这似乎只是从当前位置开始查找并且会返回关键字的一个实例?
解决方案
宏记录器不会为您提供最佳代码,因为它只能记录您在屏幕上所做的事情。这意味着它始终适用于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
推荐阅读
- java - 使用 Spring Boot 应用程序在 Quartz API 中将数据库凭据作为命令行输入传递
- iis - srcset 的 IIS 出站重写规则仅重写一次
- r - 如何在不考虑 NA 的情况下为多个变量添加后缀?
- git - gitk 无法在 macOS 10.14 (Mojave) 上启动
- java - 在 Java 的 Swing 中向 JPanel 添加更多组件后,Repaint() 不起作用
- kotlin - Kotlin Set 和 MutableSet 的 JVM 实现
- java - 是否有插件或工具可用于在没有测试用例的情况下从正在运行的应用程序生成覆盖率?
- sql - 给定两个创建和填充的表,如下所示:
- c++ - 如何将库链接到 Visual Studio 上的项目?
- php - 检测用户是否在线/离线的最佳方法是什么?PHP