Excel VBA项目未关闭

时间:2012-05-22 06:12:42

标签: c# excel-vba comaddin vba excel

我有一个COM插件,我在其中处理excel事件。我单击Alt F11以查看与Excel相关的VBA项目。但是,当我关闭工作簿时,项目资源管理器中的Excel VBA项目也不会关闭。

当我的COM插件未安装时,它会正常关闭。发生了什么,我应该做些什么不同?

2 个答案:

答案 0 :(得分:1)

问题在于内存中保留了工作簿对象。通过清除工作簿停用事件中的对象,关闭工作簿时VBA项目将关闭。

看到这个: http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/377fbebc-021d-4e48-aaef-d4658cc221b3

由于

答案 1 :(得分:1)

我的COM-Add-In(C#/ VSTO)中遇到了类似的问题:

  • 您必须在工作簿关闭时释放代码中的所有工作簿引用,并将它们设置为null。
  • 如果您在内部存储对工作簿的引用,请始终使用WeakReference让垃圾收集器执行其工作。

在我的情况下,我在自定义任务窗格中有一个Windows.Forms.Tree所有工作簿。引用的Workbook对象存储在TreeNode.Tag中。关闭工作簿后,树被事件更新,但此时我已经生成了我称之为VBA工作簿的“鬼”。 我通过用Workbook.FullName-String替换TreeNode标签中的Workbook-Objects来解决这个问题(以后再引用它们)。

希望它有所帮助,Jörg