0

使用 .NET 和 Word 互操作,我以编程方式从模板 (.dot) 文件创建新的 Word 文档。有几种方法可以做到这一点,但我选择使用 AttachedTemplate 属性,例如:

Dim oWord As New Word.Application()  
oWord.Visible = False  

Dim oDocuments As Word.Documents = oWord.Documents  

Dim oDoc As Word.Document = oDocuments.Add()  
oDoc.AttachedTemplate = sTemplatePath  
oDoc.UpdateStyles()  

(由于在使用 Documents.Add() 从模板打开时发现了内存泄漏问题,我选择了 AttachedTemplate 方法而不是 Documents.Add() 方法。)

除非模板页脚中有图像(表示为 InlineShape),否则这可以正常工作。在这种情况下,图像不会出现在生成的文档中。具体来说,图像应该出现在oDoc.Sections.Item(1).Footers.Item(WdHeaderFooterIndex.wdHeaderFooterPrimary).Range.InlineShapes集合中,但它没有。

使用 Documents.Add() 时这不是问题,但是正如我所说的那样,该方法不是我的选择。

我是否需要采取额外的步骤才能从模板中获取图像?我已经发现,在使用 AttachedTemplate 时,我必须显式调用 UpdateStyles()(如您在我的代码片段中所见)将模板样式应用于文档,而使用 Documents.Add() 时会自动完成。或者也许有一些疯狂的解决方法?非常感谢您的帮助!:)

4

1 回答 1

0

仅设置AttachedTemplate属性时,您新创建的文档根本不会继承模板中的任何内容。您将只能获得模板中定义的样式和自动文本,并可以访问该模板中定义的 VBA 宏。

要真正基于您需要的模板创建文档(正如您已经描述的那样),将模板作为参数传递给Add()方法。

您能否描述一下这是如何导致内存泄漏的,您是如何检测到泄漏的,以及这种内存泄漏对您的应用程序有何影响?最好解决该问题(如果它确实是泄漏)而不是使用解决方法。

于 2010-03-26T21:10:53.990 回答