VBからExcelなどを扱う際、COMオブジェクトの解放に注意する必要があります。 Microsoftのサポート技術情報に解決方法が紹介されています。
Visual Studio .NET クライアントで自動化した Office アプリケーションが終了しない
COMオブジェクトは、作成した(された)オブジェクトをすべて変数に保管し 明示的にSystem.Runtime.InteropServices.Marshal.ReleaseComObjectで参照カウント 減らしてあげる必要があるようです。(最初は、Excel.Applicationだけでよいのではと思っていたのですがダメなようです。)
メニューより[プロジェクト] - [参照の追加] を選択し、参照の追加ダイアログを表示します。 タブの中からCOMを選択します。一覧の中からMicrosoft Excel ******を選択し、[OK]をクリックします。
注意:エラー処理は省略してあります。
Dim xlApplication As Excel.Application Dim xlBooks As Excel.Workbooks Dim xlBook As Excel.Workbook ' Excelのインスタンスを生成する xlApplication = New Excel.Application() ' xlApplicationからWorkBooksを取得する xlBooks = xlApplication.Workbooks ' Workbookを追加する xlBook = xlBooks.Add() ' 保存ファイル先 Dim strFilePath As String = "c:\hoge\hoge.xls" ' 保存 xlBook.SaveAs(strFilePath) ' Excelを終了する xlApplication.Quit() ' COM オブジェクトの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication) xlBook = Nothing xlBooks = Nothing xlApplication = Nothing
Copyright 1997-2008 BBB All rights reserved.