2012-05-22 77 views
3

我有一個COM插件,我正在處理Excel事件。我點擊Alt F11查看與excel相關的VBA項目。但是,當我關閉工作簿時,項目資源管理器中的Excel VBA項目也沒有關閉。Excel VBA項目未關閉

當我的COM插件沒有安裝時,它會正常關閉。發生了什麼,我應該做些什麼改變?

+0

這剛剛開始發生?你能告訴我們你的COM Add-In做了什麼(或者它沒有做什麼,例如處置/釋放),以防止VBA編輯器不關閉? –

+1

沒有它從一開始就發生。但我剛剛找到了解決辦法。這是由於工作簿對象保留在內存中而發生的。當我使用Gargabe收集器清潔它時,它工作正常。謝謝 – user1140366

+0

你可以把這個作爲答案,謝謝 –

回答

0

我有類似的問題,我的COM-外接(C#/ VSTO):

  • 你必須釋放所有工作簿引用您的代碼在工作簿關閉時設置爲空。
  • 如果您在內部存儲對工作簿的引用,請始終使用WeakReference讓垃圾收集器執行其工作。

在我的情況下,我有一個Windows.Forms.Tree所有工作簿在自定義任務窗格中。被引用的工作簿對象存儲在TreeNode.Tag中。在我關閉了工作簿之後,樹被事件更新了,但是此時我已經生成了我稱之爲「鬼」的VBA工作簿。 我通過用Workbook.FullName-String替換TreeNode標籤中的Workbook-Objects(稍後參考它們)來解決此問題。

希望它有幫助,Jörg