使用MS word VBA查找不可打印的字符

使用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

我编写了一个宏,它在word文档中搜索特定的wind card定义的文本字符串,然后找到找到的匹配项属于哪个段落。一切正常,但现在我面临以下挑战:我需要找到不可打印的字符,特别是我需要找到Ms word索引引用,它们显示在类似{XE“text to index”}的单词中。 我发现了一个难题,当我调用Ms Word查找对话框(CNTRL+F),然后定义通配符搜索模式“XE”*”时,Ms Word会找到这些。但是,当我为VBA find函数传递相同的模式时,它没有找到它们,因此我观察到手动调用的find函数的行为与VBA中的行为之间存在一些差异

知道如何使用VBA查找这些不可打印的字符吗

仅供参考,这就是我调用find函数的方式


使用范围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) ...

查看