tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Excelのプロセスについて
投稿日: 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
******************************************************************
この部分をコメントアウトしたところプロセスは残らなかったので、原因箇所はわかるのですが
どのように記述すればいいのかが分かりません。
何度も出ている質問だとは思いますが、どなたかご教示お願いします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。