使用MS word VBA查找不可打印的字符
我编写了一个宏,它在word文档中搜索特定的wind card定义的文本字符串,然后找到找到的匹配项属于哪个段落。一切正常,但现在我面临以下挑战:我需要找到不可打印的字符,特别是我需要找到Ms word索引引用,它们显示在类似{XE“text to index”}的单词中。 我发现了一个难题,当我调用Ms Word查找对话框(CNTRL+F),然后定义通配符搜索模式“XE”*”时,Ms Word会找到这些。但是,当我为VBA find函数传递相同的模式时,它没有找到它们,因此我观察到手动调用的find函数的行为与VBA中的行为之间存在一些差异 知道如何使用VBA查找这些不可打印的字符吗 仅供参考,这就是我调用find函数的方式使用MS word VBA查找不可打印的字符,vba,ms-word,office-2007,Vba,Ms Word,Office 2007,我编写了一个宏,它在word文档中搜索特定的wind card定义的文本字符串,然后找到找到的匹配项属于哪个段落。一切正常,但现在我面临以下挑战:我需要找到不可打印的字符,特别是我需要找到Ms word索引引用,它们显示在类似{XE“text to index”}的单词中。 我发现了一个难题,当我调用Ms Word查找对话框(CNTRL+F),然后定义通配符搜索模式“XE”*”时,Ms Word会找到这些。但是,当我为VBA find函数传递相同的模式时,它没有找到它们,因此我观察到手动调用的f
使用范围1.查找
.Text=搜索字符串
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
“这里有一些代码
以
卡兹贾夫,谢谢你的链接,非常有用。
但是,我必须说,这对我没有帮助。不过,我遇到的问题是,MS Word搜索会产生不同的结果,这取决于它是手动调用(CNTRL+F)还是从VBA调用(range.find)。不同之处再次在于,手动调用的搜索函数会查找不可打印的索引相关字符(只要它们被显示),但VBA调用的函数不会这样做
在某个时刻,我认为它是固定的,通过插入行以编程方式显示不可打印的字符(ActiveWindow.ActivePane.View.ShowAll=True
)。重要的是,它是以编程方式进行的,与在文档上运行宏相反,在文档中它是手动启用的。但即使在这种情况下,这种行为也是非常不稳定的:在同一份文件上,10次中只有1次是有效的。那一刻,我必须说,我认为我是因为这种不稳定而变得疯狂,但我的同事证实,他独立地偶然发现了同样的问题
因此,我们得出结论,使用range.find
函数搜索不可打印字符在MS Word中不会产生稳定的结果
在我们的例子中,我们通过直接搜索索引(字段对象)实现了我们的目标,而不是搜索不可打印字符的模式
对于范围1中的每个字段。字段
如果aField.Type=4,则
远场,选择
pageOfFoundIndexEntry=Selection.Information(wdActiveEndPageNumber)
textOfFoundIndexEntry=Mid(aField.Code,4)
...
查看