Excelのプロセスが残ってしまう

タグの編集
投稿者 ぐすたふ  (学生) 投稿日時 2008/12/1 11:57:16
ある程度原因は絞ったのですがプロセスが残ってしまいます
Dim xlApp As New Excel.Application
        Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
        Dim xlbook As Excel.Workbook = xlBooks.Open(Filename:="data.xls", UpdateLinks:=0)
        Dim xlsheets As Excel.Sheets = xlbook.Worksheets
        Dim xlsheet As Excel.Worksheet = xlsheets.Item(1)
        Dim xlcells1 As Excel.Range
        Dim xlcells2 As Excel.Range
        xlcells1 = xlsheet.Cells
        xlcells2 = xlsheet.Cells

        '問題点
        Dim range1 As Excel.Range
        range1 = xlsheet.Cells(1, 2)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(range1)
    'ここまで

        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlcells1) 'xlcells1の解放
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlcells2) 'xlcells2の解放
        xlbook.Close(False)
        xlApp.Quit()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheets)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbook)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

とくに変な使い方はしていないと思うのですが・・・。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2008/12/1 18:45:38
> range1 = xlsheet.Cells(1, 2)

Cells プロパティは「引数を持たない」メンバです。上記は、
 range1 = xlsheet.Cells._Default(1, 2)
を省略した書き方である事に注意してください。


> とくに変な使い方はしていないと思うのですが・・・。 

_Default が返す Range は解放しているようですが、
Cells が返す Range は残っていた…というわけですね。
投稿者 ぐすたふ  (社会人) 投稿日時 2008/12/2 08:23:16
>Cells プロパティは「引数を持たない」メンバです。
._defaultの省略に気がつきませんでした。
ありがとうございました。

魔界の仮面弁士が過去に返答されていたページを参考に問題を解決しました。
こんな感じでしょうか
Dim range1 As Excel.Range
Dim objcell As Excel.Range
objcell = xlsheet.Cells
range1 = objcell._Default(1, 2)
System.Runtime.InteropServices.Marshal.ReleaseComObject(range1)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objcell)

参考にしたところ
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200412/200412_04120059.html