3

Excel イベントを処理する COM アドインがあります。クリックAlt F11して、Excel に関連する VBA プロジェクトを表示します。ただし、ワークブックを閉じると、プロジェクト エクスプローラーの Excel VBA プロジェクトも閉じられません。

COMアドインがインストールされていない場合、通常は閉じられます。何が起こっているのですか? また、どうすればよいですか?

4

2 に答える 2

1

問題は、ブックオブジェクトがメモリに残っていることでした。ブックの非アクティブ化イベントのオブジェクトをクリアすると、ブックを閉じるときにVBAプロジェクトが閉じられます。

これを参照してください: http ://social.msdn.microsoft.com/Forums/en-US/vsto/thread/377fbebc-021d-4e48-aaef-d4658cc221b3

ありがとう

于 2012-05-22T17:54:02.800 に答える
1

COM アドイン (C# / VSTO) で同様の問題が発生しました。

  • ワークブックを閉じて null に設定するときに、コード内のすべてのワークブック参照を解放する必要があります。
  • ワークブックへの参照を内部に保存する場合は、常にWeakReferenceを使用して、ガベージ コレクターがその作業を実行できるようにします。

私の場合、カスタム作業ウィンドウにすべてのブックの Windows.Forms.Tree がありました。参照された Workbook オブジェクトは TreeNode.Tag に格納されました。ワークブックを閉じた後、イベントによってツリーが更新されましたが、この時点で、VBA ワークブックの "ゴースト" と呼ばれるものが既に生成されていました。TreeNode タグの Workbook-Objects を Workbook.FullName-String に置き換えることでこれを解決しました (後で参照するため)。

お役に立てば幸いです、Jörg

于 2014-09-09T12:34:01.660 に答える