Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel VBA项目未关闭_C#_Excel_Comaddin_Vba - Fatal编程技术网

C# Excel VBA项目未关闭

C# Excel VBA项目未关闭,c#,excel,comaddin,vba,C#,Excel,Comaddin,Vba,我有一个处理excel事件的COM插件。我单击Alt F11查看与excel相关的VBA项目。但是,当我关闭工作簿时,project explorer中的Excel VBA项目也不会关闭 未安装我的COM加载项时,它会正常关闭。发生了什么,我应该采取什么不同的措施?问题在于内存中剩余的工作簿对象。通过清除工作簿停用事件中的对象,关闭工作簿时VBA项目将关闭 见此: 谢谢我的COM外接程序(C#/VSTO)也有类似的问题: 关闭工作簿时,必须释放代码中的所有工作簿引用,并将它们设置为null

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


未安装我的COM加载项时,它会正常关闭。发生了什么,我应该采取什么不同的措施?

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

见此:


谢谢

我的COM外接程序(C#/VSTO)也有类似的问题:

  • 关闭工作簿时,必须释放代码中的所有工作簿引用,并将它们设置为null
  • 如果在内部存储对工作簿的引用,请始终使用以让垃圾收集器完成其工作
在我的例子中,我有一个自定义任务窗格中所有工作簿的Windows.Forms.Tree。引用的工作簿对象存储在TreeNode.Tag中。关闭工作簿后,树被事件更新,但此时我已经生成了我称之为VBA工作簿的“ghost”。 我通过将TreeNode标记中的工作簿对象替换为Workbook.FullName-String(稍后引用它们)解决了这个问题


希望能有所帮助,Jörg

这是不是刚刚开始发生?你能告诉我们你的COM插件做了什么(或者没有做什么,比如处理/发布)来阻止VBA编辑器关闭吗?不,从一开始就发生了。但我刚刚找到了一个解决办法。发生这种情况的原因是内存中剩余的工作簿对象。当我用Gargabe收集器清洁它时,它工作了。谢谢,请把这个作为回答,谢谢