带 TOC 的 WORD OLE

WORD OLE with TOC

我在使用 ole-automation 将内容插入现有 word 文档时遇到了一个有趣的问题,代码如下:

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

这适用于大多数 word 文档,除了那些我们将 "automatic table of Content" 作为文档中第一个元素的文档。在这种情况下,自动化崩溃:

This action is not valid outside of a block-level XML

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

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

同样的阴性结果。当第一个元素是自动 table.

时,光标位置似乎无效

我有什么办法解决这个问题吗?

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

home 键并不总能让您回到最开始的地方。如果文档开头有 table 个内容,按主页键会将您带到包含 table 个内容的内容控件的开头。要排在前面,可以将SelectionEnd(和Start)属性设置为0。此外,您必须在[=20之前插入一段=] 的内容:

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