3

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

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

4

2 回答 2

1

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

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

就我而言,我在自定义任务窗格中有一个包含所有工作簿的 Windows.Forms.Tree。引用的 Workbook 对象存储在 TreeNode.Tag 中。在我关闭工作簿后,树会根据事件进行更新,但此时我已经生成了我称之为 VBA 工作簿“幽灵”的东西。我通过用 Workbook.FullName-String 替换 TreeNode 标记中的 Workbook-Objects 解决了这个问题(以便稍后引用它们)。

希望它有帮助,约尔格

于 2014-09-09T12:34:01.660 回答
1

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

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

谢谢

于 2012-05-22T17:54:02.800 回答