【问题标题】:WORD OLE with TOC带有 TOC 的 WORD OLE
【发布时间】:2017-01-20 16:31:04
【问题描述】:

在使用 ole-automation 向现有 word 文档中插入内容时遇到了一个有趣的问题:

WordApp.Selection.HomeKey(unit := wdStory);
if FileExists(s) then
  WordApp.Selection.InsertFile(Filename := s, ConfirmConversions := false, 
  Link := false, Attachment := false);

这适用于大多数 word 文档,除了那些我们将“自动目录”作为文档中的第一个元素的文档。在这种情况下,自动化会崩溃:

此操作在块级 XML 之外无效

我尝试了一些其他功能,例如:

WordApp.Selection.InsertText('Test') / (#13#10)
WordApp.Selection.InsertBreak(Page/Line)

同样的否定结果。当第一个元素是自动表格时,光标位置似乎无效。

有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: ms-word ole tableofcontents


    【解决方案1】:

    您需要确保将内容插入到文档的最开头并且第一段不包含内容控件(ToC 周围的东西)。

    home 键并不总是能让您从头开始。对于文档开头的目录,按 Home 键会将您带到包含目录的内容控件的开头。要排在前面,您可以将SelectionEnd(和Start)属性设置为0。此外,您必须在目录之前插入一个段落:

    WordApp.Selection.Start = 0
    WordApp.Selection.End = 0
    WordApp.Selection.InsertParagraphBefore
    

    【讨论】:

    • 我试过这个没有更好的结果(homekey之后的开始/结束是0)。
    • 但有效的是这样的代码(我真的不喜欢那样 - 而且添加的文件是这样“在”目录中的:尝试 除了 结束
    • 非常感谢,InsertParagraphBefore 完美运行!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多