タイトル | : Excelのプロセスについて |
記事No | : 5695 |
投稿日 | : 2007/06/24(Sun) 23:23 |
投稿者 | : ぷらぷら |
VB2003とExcel2002で開発しています。 Excelのデータを取り込むために以下のコードを実行したところ、 Excelのプロセスが残ってしまいました。
Private Sub GetData()
Dim xlsApp As New Excel.Application Dim xlsBooks As Excel.Workbooks Dim xlsBook As Excel.Workbook Dim xlsSheets As Excel.Sheets Dim xlsSheet As Excel.Worksheet Dim xlsCell As Excel.Range Dim intLastRow As Integer
Try xlsBooks = xlsApp.Workbooks xlsBook = xlsBooks.Open("C:\TEST.xls", 0) xlsSheets = xlsBook.Worksheets xlsSheet = xlsSheets.Item(1) xlsCell = xlsSheet.Cells
'使用するデータの最終行を決める intLastRow = CType(xlsCell(xlsCell.Rows.Count, 4) _ , Excel.Range).End(Excel.XlDirection.xlUp).Row
'データ取り込み処理予定
Catch ex As Exception 'エラー処理予定 Finally CloseXls(xlsCell) CloseXls(xlsSheet) CloseXls(xlsSheets) xlsBook.Close() CloseXls(xlsBook) xlsBooks.Close() CloseXls(xlsBooks) xlsApp.Quit() CloseXls(xlsApp) GC.Collect() End Try
End Sub
'使わせてもらってます Private Sub CloseXls(ByRef objCom As Object) 'COM オブジェクトの使用後、明示的に COM オブジェクトへの参照を解放する Try '提供されたランタイム呼び出し可能ラッパーの参照カウントをデクリメントします If Not objCom Is Nothing AndAlso System.Runtime.InteropServices. _ Marshal.IsComObject(objCom) Then Dim I As Integer Do I = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) Loop Until I <= 0 End If Catch Finally '参照を解除する objCom = Nothing End Try End Sub
****************************************************************** '使用するデータの最終行を決める intLastRow = CType(xlsCell(xlsCell.Rows.Count, 4) _ , Excel.Range).End(Excel.XlDirection.xlUp).Row ****************************************************************** この部分をコメントアウトしたところプロセスは残らなかったので、原因箇所はわかるのですが どのように記述すればいいのかが分かりません。 何度も出ている質問だとは思いますが、どなたかご教示お願いします。
|