C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 35 を表示中)
■17422 / )  プロセス上の EXCEL.EXEが残ってしまいます。
□投稿者/ neko (3回)-(2008/04/23(Wed) 21:15:27)

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

返信 編集キー/


管理者用

- Child Tree -