お世話になっております
VB.NETでEXCEL操作を行っているのですが、処理の最後でコンポーネントを開放しているのにも関わらず、タスクマネージャー上にEXCELのプロセスが残ってしまいます
(ただしこのプロセスはアプリケーションを終了させると何故か消えます)
EXCELのバージョン等で動かない場合があるので今回オブジェクトはCreateObject("Excel.Application")にて作成しております
開放の仕方が悪いのでしょうか?
ご教示ください
当方で使用しているEXCELは2019です
該当のソースコード
VB.NET
1 Dim objXLApp As Object 2 Dim objXLBook As Object 3 Dim objXLSheet As Object 4 5 objXLApp = CreateObject("Excel.Application") 6 7 objXLApp.ScreenUpdating = False '画面を更新しないようにします 8 objXLApp.DisplayAlerts = False 'ユーザーに入力を促すメッセージや警告メッセージを表示させない 9 objXLApp.EnableEvents = False 'マクロ無効化 10 11 objXLBook = objXLApp.Workbooks.Open("C:\TEST.xlsx") 12 13 objXLBook.Worksheets(1).Activate() 14 objXLSheet = objXLBook.ActiveSheet 15 16 '値書き込み 17 objXLSheet.Range("C3") = "テスト" 18 19 '保存 20 objXLBook.SaveAs("C:\TEST2.xlsx") 21 22 objXLApp.EnableEvents = True 23 objXLApp.DisplayAlerts = True 24 objXLApp.ScreenUpdating = True 25 26 objXLBook.Saved = True 27 28 ' Microsoft Excel およびスプレッドシートへの参照を解放します。 29 System.Runtime.InteropServices.Marshal.ReleaseComObject(objXLSheet) 30 objXLSheet = Nothing 31 objXLBook.Close() 32 System.Runtime.InteropServices.Marshal.ReleaseComObject(objXLBook) 33 objXLBook = Nothing 34 objXLApp.Application.Quit() 35 System.Runtime.InteropServices.Marshal.ReleaseComObject(objXLApp) 36 objXLApp = Nothing
試したこと
ただオブジェクトをNothingにするだけではなくSystem.Runtime.InteropServices.Marshal.ReleaseComObjectで開放した
回答3件
あなたの回答
tips
プレビュー