1

MS Word 2013 を使用しています。非常に単純な VSTO 2013 Word アドイン プロジェクトを作成しました。このプロジェクトに、ボタンを追加したリボン (XML ではなくデザイナー バージョン) を追加しました。

Button には、次のような Click イベントがあります。

private void button1_Click(object sender, RibbonControlEventArgs e)
{
    var app = Globals.ThisAddIn.Application;

    app.Selection.Range.ImportFragment("PathToAnotherWordDocument");

    var openXML = app.ActiveDocument.WordOpenXML;
}

次に、「F5」を押して、アドインをビルドして開始します。単語が開始したら、ボタンをクリックします。これにより、Word がクラッシュします (アドインではなく、Word 自体がクラッシュします)。

にあるファイルPathToAnotherWordDocumentは、いくつかの単語からなる 1 つの段落を含む単純な Word ドキュメントです。

コードをステップ実行すると、行に到達するまですべて正常に動作しますapp.ActiveDocument.WordOpenXML。これに足を踏み入れるとすぐに、クラッシュが発生します。

ウォッチ ウィンドウでこのプロパティを調べた場合にも発生します。つまり、'app.AtiveDocument' のプロパティ リストを下にスクロールすると、WordOpenXML表示されるとすぐに Word がクラッシュします。ウォッチ ウィンドウの他のすべてのプロパティは正常に表示されます。

問題のある行をコメントアウトして、ImportFragmentステートメントだけを残すと、引き続き Word を問題なく使用できます。他の Word ドキュメントからの単語が実際にインポートされていることがわかり、問題なく編集を続けることができます。

なぜこうなった?どうすればそれを止めることができますか?

編集

私はそれが起こらないようにする方法を考え出しました.app.ActiveDocument.Content.WordOpenXML最初にプロパティを変数に割り当てると、app.ActiveDocument.WordOpenXMLプロパティは魔法のように再び機能し始めます.

これは当面の問題の解決策ですが、Document の WordOpenXML プロパティに直接アクセスするとクラッシュが発生する理由を知りたいです。

4

0 に答える 0