|
分類:[.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)
|