excel - 如何在 VBA Excel 的 Word 文档中正确应用 .Find?
问题描述
我正在尝试在 Word 文档(FromDoc)中找到使用以下代码设置Appendix A
样式的字符串。Heading 1
我在 MS Word VBA 编辑器中开发了代码并且工作得很好……直到我把它移到 Excel VBA 中。
由于我将代码插入到 Excel VBA 中,因此我发现前者在 Excel VBA 中不起作用,因此已替换为.Selection
。ActiveDocument.Range
但是,现在 Execute 方法找不到Appendix A
. 我花了很多时间进行故障排除,包括阅读 StackOverflow 的帖子,但无济于事。
' Activate FromDoc
oApp.Visible = True
oApp.ActiveWindow.Activate
FromDoc.Activate
' Find Appendix A
With ActiveDocument
.Range.WholeStory
.Range.Collapse wdCollapseStart
.Range.Find.ClearFormatting
With .Range.Find
.Style = ActiveDocument.Styles("Heading 1")
.Text = "Appendix A"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
End With
.Range.Find.Execute
.Collapse wdCollapseStart
Dim r1 As Range
Set r1 = .Range
End With
我也对Set r1 = .Range
. 我担心它也可能不起作用。
感谢您在理解和纠正问题方面的帮助。
解决方案
您的许多代码没有任何用处。对于您所描述的,Word 不需要可见并且您不需要激活文档;您也不需要设置新范围。所有你需要的是:
With FromDoc
With .Range
With .Find
.ClearFormatting
.Style = "Heading 1"
.Text = "Appendix A"
.Format = True
.Forward = True
.Wrap = 1 'wdFindContinue
.MatchCase = False
.MatchWholeWord = True
.Execute
End With
With .Duplicate
.Collapse 1 'wdCollapseStart
'do whatever it is you want to do before the Appendix A heading.
End With
End With
End With
请注意,我提供了 wdFindContinue 和 wdCollapseStart 的数值;除非您首先声明它们,否则您不能将命名常量与后期绑定(如果您正在使用的话)一起使用。
推荐阅读
- reporting-services - 带有渐进式搜索的 SSRS 下拉菜单
- c - 将局部变量设置为全局,以便主函数可以在 C 中访问它
- python - 如何在 python 中实际使用 NotImplementedError?
- c++ - 使用强类型定义 CPP 定义枚举
- mysql - 如何从查询mysql中的选定列中选择记录
- php - 如何在单个屏幕中按类别和子类别显示所有产品?
- java - spring LDAP 不会抛出特定的错误代码
- javascript - 使用国家代码 +39 06 时 google-libphonenumber 的问题
- python - 我正在尝试在 Python 中使用 Matplotlib 执行代码,并在将 fill_between() 用于 matplotlib 3.3.0 时遇到以下问题
- java - 如何将 Build>Project 绑定到 Javatar(Sublime Text 3)中的键?