vba - Words VBA:使用搜索词的位置创建范围
问题描述
我有以下问题:我们编写了一个包含许多外部资源(如 XML 文件等)的规范,每次 XML 文件更改时,我们都必须修改规范中相应的 XML 部分。实际上,每次打开文档时,我都设法插入了 XML 文件的文本。我现在的问题是我无法搜索已插入的过时 XML 代码,应该用这个新代码替换。
在@Cindy Master 提供一些有用的提示后,我会采用这样的代码(代码:我使用的函数之一,其中包含对旧 xml 的困难选择,我无法使用它):
Function wasUpdated(strFilename As String, XMLStart As String, XMLEnd As String) As Boolean
Dim new_xml As String
FileToString new_xml, strFilename
Dim range_start As Long
Dim range_end As Long
Dim start_point As Range
Dim end_point As Range
Set start_point = ActiveDocument.Range
Set end_point = ActiveDocument.Range
start_point.Find.Execute(XMLStart)
end_point.Find.Execute(XMLEnd)
range_start = start_point.Start
range_end = end_point.End
Set rngParagraphs = ActiveDocument.Range( _
Start:=range_start, _
End:=range_end)
old_xml = rngParagraphs.Text
If new_xml = old_xml Then
wasUpdated = False
Else
wasUpdated = True
End If
End Function
此代码的问题是该start_point.Find.Execute(XMLStart)
函数找不到搜索的单词。奇怪的是,Selection.Find.Execute(XMLStart)
作品。Range.Find
和Selection.Find
我不知道有区别吗?
解决方案
很长一段时间后,我能够解决我的问题。下面是查找 XML 部分并将其作为 Range 对象返回的代码:
Private Function getXMLRange1(XMLStart As String):
'TEST
Dim test As Boolean
Dim XMLEnd As String
XMLEnd = "</order>"
Dim range_start As Long
Dim range_end As Long
Dim start_point As Range
Dim start_pointNext As Range
Dim end_point As Range
Set start_point = ActiveDocument.Range
test = start_point.Find.Execute(XMLStart)
' MsgBox start_point.Text
' MsgBox "Range start:" & test
start_point.Move Unit:=wdParagraph, Count:=2
Set end_point = ActiveDocument.Range(start_point.Start, ActiveDocument.Range.End)
test = end_point.Find.Execute(XMLEnd)
' MsgBox end_point.Text
' MsgBox "Range end:" & test
range_start = start_point.End
range_end = end_point.End
Set getXMLRange1 = ActiveDocument.Range( _
Start:=range_start, _
End:=range_end)
End Function
Range.Find 和 Selection.Find 的行为方式相同。
推荐阅读
- postgresql - 如何在 helm 图表中使用 postgres-exporter 的 --extend.query-path 参数?
- html - 如何更改小盒子内容的行?
- php - MySQL WHERE 过滤器基于 SELECT 中的子查询
- php - 水平显示每周数据
- javascript - 为什么我的克隆数组的代码不起作用 JavaScript
- jupyter-notebook - 为什么在 jupyter notebook 中找不到该文件?
- python - Discord.py Bot 响应时间过长
- python - 破折号回调依赖于先前回调中的先前计算和 # 参数的 TypeError
- git - 我可以在不从远程删除它们的情况下删除本地 git 存储库中的文件吗?
- siddhi - 如何让 siddhi 电子邮件接收器工作