2

私の会社には、顧客との通信を生成するために使用される多数のテンプレートがあります。生成されたファイル (テンプレート + データ) のコピーが後で編集できるように保存されるように、既存のプロセスを変更する必要があります。

私の問題は、これらの保存された MSWord ドキュメントの 1 つを開いて編集してから閉じると、MSWord がテンプレート (生成プロセスで選択されたもの) に変更が加えられたと主張することです。

なぜこれが起こっているのかはよくわかりませんが、生成されたドキュメントに元のテンプレートへの参照が含まれている可能性がありますが、テンプレートがリモートの場所にあるため、MSWord が新しいローカル ファイルを生成しようとしています。 .

その診断が正しければ、ドキュメントからテンプレート参照を削除する方法が必要です。

診断が間違っている場合、考えられる説明/解決策は何ですか?


両方の結果ファイルにテンプレートへの参照が含まれていることがわかりました。

注: Word での手動編集は問題ありません。レターを生成して Winword からディスクに保存すると、それを開いて操作することができます。自動化ステップのどこかで問題が発生しています。


興味深いことに、保存形式を に変更しましたが'.rtf'、問題は残っています。

さらに、テンプレートへの変更の保存に「はい」と言っても問題ありません。ドキュメントを開いたり閉じたりするたびに (編集しているかどうかにかかわらず) プロンプトが表示され続けます。


wdFormatXML文書を保存することで、レター テンプレートへの参照を確認して編集できることを発見しました。私がそれをすれば、問題はなくなります。

私は現在、自動化によって同じ結果を達成しようとしていますが、成功していません。

  WordApp.ActiveDocument.Set_AttachedTemplate(tmplt);

tmplt 'Normal.dot'、varNull、'c:\progra~1\etc\Simple.dotx' などの値では機能しません。関数呼び出しは、これらの値の最初の 2 つのテンプレートが見つからないか、単にハングすることを示しています。

元の質問に戻ります - 添付されたテンプレートをクリアするにはどうすればよいですか?

4

1 に答える 1

0

私は最終的にそれを理解しました。私の問題は、何らかの方法で遅延バインディングにかかっていました。次のコードが機能することがわかりました

var
  docpath : OleVariant;
  fmt     : OleVariant;
  tmplt   : OleVariant;
  WordApp : WordApplication;
  WordDoc : WordDocument;
begin
  docpath := SaveLoggedDocToDisk(GetCurrentFileName());

  WordApp := CoWordApplication.Create;
  try
    fmt     := EDITABLE_FORMAT;
    tmplt   := '';

    WordDoc := WordApp.Documents.Open(docpath, EmptyParam, EmptyParam,  EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, fmt, EmptyParam, EmptyParam );
    WordDoc.Set_AttachedTemplate(tmplt);

このコードの以前のバージョンで私が抱えていた問題は、

WordApp.ActiveDocument.SetAttachedTemplate(tmplt);

同等に見えますが、動作していませんでした。型の変数を作成することでWordDocument、ルーチンに命が吹き込まれました。

于 2014-09-10T18:03:53.080 に答える