Range.Find.Execute在单词2013中失败

时间:2014-04-02 10:56:23

标签: vba ms-word word-vba word-2013

请考虑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格式)打开文档,则不存在错误。

1 个答案:

答案 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