私のクラスには、Excelを開いて範囲が存在するかどうかを確認するこのサブがあります。私が直面している問題は、プロセスが閉じないことです。私は自分の尻尾をグーグルで調べてきましたが、解決策が見つかりません。私のコードを見て、私が見逃している単純な愚かなものかどうかを確認してください。ありがとう。
Private Function NamedRangeExists(ByVal ProductFileName As String, ByVal RangeName As String) As Boolean
Dim ExcelApp As Excel.Application
'Create an Excel Object
ExcelApp = CType(CreateObject("Excel.Application"), Excel.Application)
Dim TheRange As Microsoft.Office.Interop.Excel.Name
Dim TheRangeName As String = ""
Dim ObjWorkbook As Excel.Workbooks = ExcelApp.Workbooks
'Open the Product
Dim TheProduct As Excel.Workbook = ObjWorkbook.Open(ProductFileName)
For Each TheRange In TheProduct.Names 'ExcelApp.ActiveWorkbook.Names
TheRangeName = CStr(TheRange.Name)
If (InStr(TheRangeName, RangeName) <> 0) Then
TheProduct.Save()
TheProduct.Close()
ExcelApp.Quit()
ExcelApp = Nothing
Marshal.ReleaseComObject(ExcelApp)
Return True
End If
Next
TheProduct.Close()
ObjWorkbook.Close()
ExcelApp.Quit()
Marshal.ReleaseComObject(ObjWorkbook)
Marshal.ReleaseComObject(TheProduct)
Marshal.ReleaseComObject(ExcelApp)
TheProduct = Nothing
ObjWorkbook = Nothing
ExcelApp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
Return False
End Function