2011-08-11 14 views
1

私は、数時間から私の頭を叩いて、以下のステートメントで作成したExcel.Rangeオブジェクトを破棄しています。 Stack Overflowについての議論のほとんどすべてをチェックしました。Excel.Rangeオブジェクトは処理しないExcel処理を終了する

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

この行をコメントアウトすると、Excelアプリケーションが正常に終了します。しかし、私はこの行を使用すると、GCによって処理されないExcel.Rangeオブジェクトが作成されます。誰でも私を助けてくれますか?あなたがそのようなネストされた呼び出しを行うべきではありません

おかげ

答えて

1

、代わりのようなものにするために、それを変更します。

Marshal.ReleaseComObject(r) 

:そして、rはで適切に配置することができる

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

必要に応じて変数を再利用することができます。

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

同じExcel.Rangeオブジェクトを返すので、oSheet.Cells(TitleRow3、1)を解決するにはどうすればいいですか? –

関連する問題