0

新しいドキュメントが SharePoint ライブラリに保存されると ([新しいドキュメント] > [名前を付けて保存])、カスタム イベント ハンドラー (ItemAdded) によってドキュメント レコードが更新され、いくつかの列の値が入力される状況があります。また、ドキュメントはプログラムでチェックインされます。これらの変更は、バックエンドでトリガーされるため、Word インターフェイスからは見えません。すべてのサーバー プロパティと正しいチェックアウト ステータスでドキュメントを開くには、サーバーからドキュメントを閉じて再度開く必要があります。次のコードを使用して閉じたり開いたりしています。

    Word._Document doc = this.Application.ActiveDocument;
    doc.Close(Word.WdSaveOptions.wdDoNotSaveChanges, System.Type.Missing, System.Type.Missing);
    Word.Document aDoc = this.Application.Documents.Open(docPath, System.Type.Missing, true, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, true, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);
    aDoc.Activate();

ドキュメントは正常に閉じますが、開くとアプリケーションがクラッシュします。ただし、コードからのみドキュメントを閉じて、最近使用したファイル リストから手動でドキュメントを開くと、ドキュメントは正常に開きます。ドキュメントを開く前にクリーンアップする必要がありますか?

DocumentBeforeSave イベント (Cancel=true) を使用して、Word のデフォルトの保存操作をオーバーライドしたことに注意してください。それが関連情報かどうかはわかりません。

EDIT:上記のブロックがCOMExceptionまたは何らかの種類の例外をまったくスローするかどうかをキャッチしようとしましたが、そうではありません。open ステートメントで単にクラッシュします。

4

1 に答える 1

0

以下を使用してみてください。

        (new Thread(() =>
        {
            doc.Close(Word.WdSaveOptions.wdDoNotSaveChanges, System.Type.Missing, System.Type.Missing);

        })).Start();
于 2013-06-13T15:07:07.600 に答える