私は次のコードを持っています(オンラインチュートリアルから入手しました)。コードが動作していますが、私はExcelのCOMオブジェクトを処理する方法があると思われます。は適切ではありません。本当にGC.Collectを呼び出す必要がありますか?または、このExcel comオブジェクトを処分する最善の方法は何ですか?VB.NETを使用してExcel comオブジェクトを処分する適切な方法はありますか?
Public Sub t1()
Dim oExcel As New Excel.Application
Dim oBook As Excel.Workbook = oExcel.Workbooks.Open(TextBox2.Text)
'select WorkSheet based on name
Dim oWS As Excel.Worksheet = CType(oBook.Sheets("Sheet1"), Excel.Worksheet)
Try
oExcel.Visible = False
'now showing the cell value
MessageBox.Show(oWS.Range(TextBox6.Text).Text)
oBook.Close()
oExcel.Quit()
releaseObject(oExcel)
releaseObject(oBook)
releaseObject(oWS)
Catch ex As Exception
MsgBox("Error: " & ex.ToString, MsgBoxStyle.Critical, "Error!")
End Try
End Sub
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
[C#でExcel interopオブジェクトを適切にクリーンアップする方法](http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c)の可能な複製-sharp) –
@Petr Abdulin、C#は私にとっては外国語です。正確に重複しません。私は、いわゆる重複で受け入れられた答えを理解するのに苦労しています。 –
'GC.Collect()'を呼び出す必要は決してありません。 – Seph