2011-08-11 4 views
1

다음 문장으로 작성한 Excel.Range 개체를 처리하기 위해 몇 시간이 지나서야 머리를 으 b하고 있습니다. 스택 오버플로에 관한 거의 모든 토론을 확인했습니다.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

oSheet.Cells (TitleRow3, 1)도 같은 Excel.Range 객체를 반환하기 때문에 어떻게 처리 할 수 ​​있습니까? –

관련 문제