【问题标题】:Word 2003 vs. 2007/2010 AutomationWord 2003 与 2007/2010 自动化
【发布时间】:2011-03-25 16:21:42
【问题描述】:

我在 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 年。

为什么会有不同?有人知道我应该做些什么不同的事情吗?

谢谢。

【问题讨论】:

    标签: vb6 ms-word page-break word-automation


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多