投稿者 たらちゃん  (社会人) 投稿日時 2009/1/18 19:52:37
お世話になります。
大変申し訳ありませんが、再度Excelプロセス終了する方法について教えてください。
先に質問させていただいたものと同じコードで、COMオブジェクトを開放すれば問題なくプロセスが終了するようになりました。しかし、Excelに名前をつけて保存する処理をいれたところ、またプロセスが終了しないようになりました。下記コードの(※1)(※2)の箇所をコメントにすると、正常にプロセスが終了しますので、(※)マークのコードに問題がある事までは分かりましたが、いったい何が悪いのか分かりません。また保存先が問題あるのかと思い(※1)をコメントしましたがやはりプロセスが残ったままです。


コードの間違い探しをしてもらうようで大変恐縮なのですが、何卒宜しくお願いいたします。

  '-------------
        'Excelに接続
        '-------------

        Dim xlApp As New Excel.Application
        Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
        Dim xlBook As Excel.Workbook = xlBooks.Add
        Dim xlSheets As Excel.Sheets = xlBook.Worksheets
        Dim xlsheet As Excel.Worksheet = xlSheets.Item(1)
        Dim xlCells As Excel.Range


       
        'Excelを非表示にする()
        xlApp.Visible = False

        '-------------------------
        'DataSet抽出結果を出力する
        '-------------------------

        Me.ProgressBar1.Minimum = 0
        Me.ProgressBar1.Maximum = oledv.Count - 1

        Dim i As Integer
        For i = 0 To oledv.Count - 1
            xlCells = xlsheet.Cells
            xlCells(1, 1).value = "会社名"
            xlCells(1, 2).value = "住所"
            xlCells(1, 3).value = "県名"
            xlCells(i + 2, 1).value = oledv(i)(1)    '会社名
            xlCells(i + 2, 2).value = oledv(i)(5) '住所
            xlCells(i + 2, 3).value = oledv(i)(10) '県
            'COMオブジェクトの開放
             System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCells)
            Me.ProgressBar1.Value = i
        Next

        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)

      (※1)xlBook.SaveAs("C:\Users\hoge\Documents\book.xls")
      (※2)xlBook.Close()

        'COMオブジェクトの開放       
         System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)

        xlApp.Quit()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
        xlSheet = Nothing
        xlBook = Nothing
        xlApp = Nothing

        '処理終了メッセージ
         MsgBox("ファイルの加工を終了しました")
        Me.ProgressBar1.Value = 0

    End Sub