Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
Excelのプロセスが消えない(再)
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=242#CommentId1722
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
たらちゃん
 (社会人)
投稿日時
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