タイトル : Excelのプロセスが終了しない 投稿日 : 2005/03/31(Thu) 16:30 投稿者 : VB.net初心者
[OSのVer]:WindowsXP [VBのVer]:VB.NET いつも参考にさせて頂いております。 同じような質問が続いてしまって申し訳ないのですが、ぜひ教えて頂けたらと思い、投稿させて頂き ました。 データベースから取得したレコードをエクセルに書き込むアプリケーションを作成しているのです が、取得したレコード数が2件以上になると、Excelのプロセスが残ってしまいます。 毎回COMの開放は行っているつもりなのですが、なぜプロセスが消えないのか理由が分かりません。 COMの開放については、ホームページ内の記述を参考にさせて頂きました。 以下、ソースです。 よろしくお願いいたします。 ---------------------- Dim xlApp As Excel.Application = CreateObject("Excel.Application") Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open(xlsFile) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(sheet_save) Dim xlRange As Excel.Range Dim row_cnt As Integer = 5 'タイトル入力用の変数 Dim strTitle(0, 6) As String 'データ入力用の変数 Dim strDat(0, 6) As String 'タイトルの設定 strTitle(0, 0) = "タイトル" strTitle(0, 4) = DateTime.Now.ToString xlRange = xlSheet.Range("A1:G1") 'セルへデータの入力 xlRange.Value = strTitle 'xlRangeの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange) Do Until (レコードがなくなるまで) '2行目からは前の行をコピーする If row_cnt > 5 Then xlSheet.Rows(row_cnt - 1).Select() xlApp.Selection.Copy() xlSheet.Rows(row_cnt).Select() xlApp.Selection.Insert() xlApp.CutCopyMode = False xlApp.Selection.ClearContents() End If 'データの入力セル範囲 Dim strRange As String = "A" + row_cnt.ToString + ":" + "G&quo t; + row_cnt.ToString xlRange = xlSheet.Range(strRange) strDat(0, 0) = "aaa" strDat(0, 1) = "bbb" strDat(0, 2) = "ccc" strDat(0, 3) = "ddd" strDat(0, 4) = "eee" strDat(0, 5) = "fff" strDat(0, 6) = "ggg" 'セルへデータの入力 xlRange.Value = strDat 'xlRangeの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange) '書き込む行番号をインクリメント row_cnt += 1 Loop 'ファイルの保存処理 '保存時の問合せのダイアログを非表示に設定 xlApp.DisplayAlerts = False '上書き保存 xlSheet.SaveAs(xlsFile) '元に戻す xlApp.DisplayAlerts = True '終了処理 'xlRange の開放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange) 'xlSheet の開放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet) 'xlSheets の開放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets) 'xlBook を閉じる xlBook.Close(False) 'xlBook の開放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) 'xlBooks の開放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) 'Excelを閉じる xlApp.Quit() 'xlApp を開放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) |