| 分類:[.NET 全般]
VisualBasic.netで [ 二つのエクセルファイルの情報を読み込んだ後に エクセルファイルを終了させる ] という処理を行いました。 ですが、 画面上ではエクセルが閉じるのを確認出来たのですが、プロセス上では EXCEL.EXEが残ってしまいます。 (エクセルの、アプリケーション、ブック、シート の開放も行ったのですが、プロセス上で残っていました。) 以下がそのソースなのですが、どうすれば、EXCEL.EXEを消すことができるのでしょうか。
たいへん初歩的な質問かとは思いますが、よろしくお願いいたします。
'------エクセルファイルを開く&表示-------
'エクセルアプリケーションの定義 Dim app1 = CreateObject("Excel.Application") Dim app2 = CreateObject("Excel.Application")
app1.displayalerts = False app2.DisplayAlerts = False
'ブックの定義 Dim bk1 = app1.Workbooks Dim bk2 = app2.Workbooks
Dim book1 = bk1.Open(myData.road_path1) Dim book2 = bk2.Open(myData.road_path2)
'シートの定義 Dim sheet1 = book1.Worksheets(1) Dim sheet2 = book2.Worksheets(1)
'使用されている列数を取得する Dim Row1 = sheet1.UsedRange.Rows.Count() - 1 Dim Row2 = sheet2.UsedRange.Rows.Count() - 1
'使用されている行数を取得する Dim Col1 = sheet1.UsedRange.Columns.Count() - 1 Dim Col2 = sheet2.UsedRange.Columns.Count() - 1
'数値が大きい方を設定する myData.Max_Row = dif_suu(Row1, Row2) myData.Max_Col = dif_suu(Col1, Col2)
'バッファ myData.File1_buf = New String(myData.Max_Row, myData.Max_Col) {} myData.File1_s_buf = New String(myData.Max_Row, myData.Max_Col) {} myData.File2_buf = New String(myData.Max_Row, myData.Max_Col) {} myData.File2_s_buf = New String(myData.Max_Row, myData.Max_Col) {} myData.File1_out_s_buf = New String(myData.Max_Row, myData.Max_Col) {} myData.File2_out_s_buf = New String(myData.Max_Row, myData.Max_Col) {}
'ファイル1、2読込 Try For i = 0 To myData.Max_Row For j = 0 To myData.Max_Col '表示用バッファ、出力用バッファ登録 If sheet1.cells(i + 1, j + 1).value = Nothing Then myData.File1_buf(i, j) = "" myData.File1_s_buf(i, j) = "" myData.File1_out_s_buf(i, j) = "" Else myData.File1_buf(i, j) = sheet1.cells(i + 1, j + 1).value myData.File1_s_buf(i, j) = sheet1.cells(i + 1, j + 1).value myData.File1_out_s_buf(i, j) = sheet1.cells(i + 1, j + 1).value End If If sheet2.cells(i + 1, j + 1).value = Nothing Then myData.File2_buf(i, j) = "" myData.File2_s_buf(i, j) = "" myData.File2_out_s_buf(i, j) = "" Else myData.File2_buf(i, j) = sheet2.cells(i + 1, j + 1).value myData.File2_s_buf(i, j) = sheet2.cells(i + 1, j + 1).value myData.File2_out_s_buf(i, j) = sheet2.cells(i + 1, j + 1).value End If Next Next Catch ex As Exception MsgBox("ファイルリードエラー") logfile.log_out("ERR", "ファイルリードエラー", Err.Description, "") Return conf.D_NG End Try
'終了処理 app1.Workbooks.close() app1.quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet1) System.Runtime.InteropServices.Marshal.ReleaseComObject(book1) System.Runtime.InteropServices.Marshal.ReleaseComObject(bk1) System.Runtime.InteropServices.Marshal.ReleaseComObject(app1)
app2.Workbooks.close() app2.quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet2) System.Runtime.InteropServices.Marshal.ReleaseComObject(book2) System.Runtime.InteropServices.Marshal.ReleaseComObject(bk2) System.Runtime.InteropServices.Marshal.ReleaseComObject(app2) |