0

.NET と Word Interop を使用して、テンプレート (.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() を使用してテンプレートから開くときに発見したメモリ リークの問題のため、Documents.Add() メソッドよりも AttachedTemplate の手段を選択しています。)

これは、テンプレート フッターに画像 (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 に答える