Excel.Range对象未处理,因此不关闭Excel进程

时间:2011-08-11 09:58:49

标签: office-interop

我正在敲打我的脑袋,因为几个小时来处理Excel.Range对象,由下面的语句创建。我已经在Stack Overflow上检查了几乎所有关于它的讨论。

oSheet.Range("A1", "H1").Merge()

当我注释掉这一行时,Excel应用程序成功关闭。但是,当我使用这一行时,它会创建Excel.Range对象,而不是由GC处理。任何人都可以帮助我。

谢谢

1 个答案:

答案 0 :(得分:1)

您不应该像这样进行嵌套调用,而是将其更改为:

Dim r As Object = oSheet.Range("A1", "H1")
r.Merge()

然后可以通过以下方式正确处理:

Marshal.ReleaseComObject(r)

然后你可以根据需要重用变量:

r = oSheet.Cells(TitleRow3, 1)
' do something with r
Marshal.ReleaseComObject(r)
r = 'get a new range from somewhere
' do something with r
Marshal.ReleaseComObject(r)
...