2011-08-11 45 views
1

我幾個小時才敲打我的腦袋,以處理由下面的語句創建的Excel.Range對象。我已經檢查了幾乎所有關於Stack Overflow的討論。Excel.Range對象不配置如此不關閉關閉Excel進程

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

當我註釋掉這一行Excel應用程序成功關閉。但是當我使用這條線時,它會創建不會被GC處置的Excel.Range對象。任何人都可以請幫助我。

感謝

回答

1

你不應該做的嵌套調用,這樣,而不是改變它是這樣的:

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

然後R可以被一個妥善處置:

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) 
... 
+0

但我使用了不同參數的oSheet.Range太多的實例我不能使用一些通用的解決方案一次創建oSheet.Range對象,然後將其用於休息操作? –

+0

@Irfan:不知道我是否理解這個問題,但是您可以重複使用相同的變量,只需記住在爲其分配新範圍之前釋放它。 –

+0

我怎麼可以teckle oSheet.Cells(TitleRow3,1),因爲它也返回相同的Excel.Range對象 –