2

我在 VB6 应用程序中自动化 Word,当主机使用 Word 2007 或 2010 但不在运行 Word 2003 的机器上时出现异常。异常是

运行时错误“4605”:“此方法或属性不可用,因为对象引用 > 表行的末尾。”

在以下循环的第七次迭代中抛出异常,在尝试插入分页符的行上:

For num = 1 To breakArrCount
    Set myRange = oworddoc.Paragraphs(breakArr(num)).Range
    With myRange
        On Error Resume Next
        .Collapse Direction:=wdCollapseEnd
        .InsertBreak Type:=wdPageBreak
    End With
Next

数组 breakArr 存储文档中段落的索引,后面跟着一个分页符。

有趣的是,如果我在异常之前(即第 6 次迭代之后)跳出循环并查看生成的文档,我注意到分页符(前 6 页)插入到 Word 2007/2010 中的不同点比 2003 年。

为什么会有区别?有人知道我应该做些什么不同吗?

谢谢。

4

1 回答 1

2

欢迎来到开发针对多版本的 Word 自动化应用程序的世界。

不过说真的,你会遇到 +mountains+ 这些类型的问题。我知道不同版本的 word 以不同的方式在不同的地方插入分页符。我在开发一个插件时遇到了很多问题,该插件可以智能地将多个 word 文档合并为一个普通的(非主)文档。

最好的办法是在遇到此类异常时进行测试并构建异常例程以处理特定版本的 Word。希望你不会遇到很多,但我可以说那里有很多。

在这种特殊情况下,所选段落可能在表格中,并且您正在折叠到段落的结尾,然后尝试插入一些内容,这与您所在单元格的单元格结尾标记混淆。不同word 版本的处理方式不同。在一种情况下(我忘了具体是哪一个),如果您在表格中的最后一个单元格中执行此操作,则在保存文档时会损坏文档,但在您尝试重新打开文档之前您不会知道这一点。

通常,您可以通过检测您在表格中来解决此特定问题,如果是,请折叠到最后,然后备份一个字符(如果可能,单元格可能为空白),然后插入分页符。

于 2011-03-28T16:32:18.270 回答