|
分類:[.NET 全般]
いつもお世話になっております。
VB.NET 2003+WEBアプリケーションにて
Excelファイルを参照しているのですが
『Excel.exe』がプロセスに残り続けてしまう問題で悩んでいます
プログラムは以下のように作成しているのですが
[Cellデータの取得]の部分(■〜■の間)をコメントアウトして動かした場合は
最後の(xlApplication)の解放でプロセス上から消えるのですが
[Cellデータの取得]の部分を動かすと、プロセス上から消えなくなってしまいます
xlRange を使用した場合のみプロセスが残っているという事は
xlRange オブジェクトの解放の仕方が悪いのでしょうか?
================================================================================
Dim strBUF As String
Dim xlApplication As Excel.Application
Dim xlBooks As Excel.Workbooks
Dim xlBook As Excel.Workbook
Dim xlSheets As Excel.Sheets
Dim xlSheet As Excel.Worksheet
Dim xlRange As Excel.Range
'エクセルアプリケーションの開始
xlApplication = CreateObject("Excel.Application")
'エクセルブックの設定
xlBooks = xlApplication.Workbooks
xlBook = xlBooks.Open("C:\Hoge.xls")
'エクセルシートの設定
xlSheets = xlBook.Worksheets
xlSheet = CType(xlSheets(2), Excel.Worksheet)
'非表示
xlApplication.Visible = False
'■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
'[Cellデータの取得]
xlRange = CType(xlSheet.Cells(1, 1), Excel.Range)
strBUF = xlRange.Text
Label1.Text = strBUF
'■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
'Rangeオブジェクトの開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
'Sheetオブジェクトの開放
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
xlSheets = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
xlSheet = Nothing
'Bookオブジェクトの開放
xlBook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
xlBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
xlBooks = Nothing
'Excelの終了
xlApplication.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
xlApplication = Nothing
================================================================================
|