请考虑Word 2013中的下表
A BBB
A CCC
D E F
A,B和C是合并的单元格。
A和B是空的。 C里面有文字A
。
现在提供以下代码
Set rng = ActiveDocument.Range(0, 0)
With rng.Find
.Forward = True
.Wrap = wdFindStop
.Execute "A"
End With
在Execute "A"
上崩溃了字。
如果我将文字更改为Execute "B"
,它找不到任何内容,但不会导致文字崩溃。问题仅出现在2013年。
我们尝试逐个手动搜索Selection.Find
,但这两个都很慢。
有没有快速的方法来规避这个错误?
编辑:这是我构建的最小失败示例。在我们的应用程序中,我们使用了很多Range.Find
,有时使用wrap并且几乎从不从Document.Start开始
EDIT2:进一步调查显示,如果以兼容模式(Word 97-2003格式)打开文档,则不存在错误。
答案 0 :(得分:1)
你不能只从.Find
对象而不是范围对象激活Tables(index).Selection
对象?
如果您只是从ActiveDocument而不是Table对象激活.Selection对象,那么可能需要永远。但是直接从表中索引会显着加快速度。
ActiveDocument.Tables(1).Select
With Selection.Find
.Forward = True
.Wrap = wdFindStop
.Execute FindText:="A"
End With