0

Microsoft.Office.Interop.Word.DocumentインスタンスのSaveFormatプロパティにアクセスしようとしています(Documentはインターフェイスであるため、技術的にはDocumentClassインスタンスだと思います)。SaveFormatを読み込もうとすると、Wordがかなり不自然にクラッシュします。アクセスをtry..catchブロックでラップすることも適切ではありません。制御は、私が再キャッチするための例外をスローするのではなく、アプリを終了することを決定する別のアセンブリに渡されています。

これは、次のように、単にコードでプロパティを読み取っている場合でも発生します。

WdSaveFormat saveFormat = this.document.SaveFormat; // document is a Microsoft.Office.Interop.Word.Document

または、デバッガーを使用してWatchのプロパティにアクセスしたとき。

ドキュメントインスタンス自体は問題ないと思います。他のプロパティ(パスなど)はに反映できます。ドキュメントオブジェクトでクイックウォッチを実行すると、赤旗を立てる「評価できませんでした」、「null」などの値ではなく、正当に見える値が生成されます。クイックウォッチウィンドウで1行ずつ下にスクロールでき、SaveFormatに到達すると爆発します。

クラッシュは、Word2007とWord2010で発生します。

PIAタイプを埋め込むことと、埋め込まないことの両方を試しました(参照プロパティの「EmbedInteropTypes」フラグ)

2010バージョンの代わりにWord2007PIAを参照してみました。同じ動作。

プロジェクトでは.NET4.0をターゲットにしていますが、3.5もターゲットにしています。変化なし。

何か案は?私のコンプをデフェネストレーションしようとしています:)

4

1 に答える 1

0

ドキュメントはゼロバイトのファイルであることがわかりました。私たちの悪いことですが、Wordが単に爆破するのではなく、有用な例外(ドキュメントを開かずにApplication.ActiveDocumentにアクセスしようとしたときに発生するのと同様)をスローした場合は良かったでしょう。まあ、壮大な謎は解決しました。:)おそらくドキュメント自体が問題であるという提案をしてくれた0xA3に感謝します。思考の1つのトラックに乗って、明白なものを見ることを忘れたことがありますか?

于 2013-01-31T17:49:15.940 に答える