既存のExcel ファイル(Book)を開く

メモ:  Category:vb

COMを使う時の注意

VBからExcelなどを扱う際、COMオブジェクトの解放に注意する必要があります。

Microsoftのサポート技術情報に解決方法が紹介されています。

Visual Studio .NET クライアントで自動化した Office アプリケーションが終了しない

COMオブジェクトは、作成した(された)オブジェクトをすべて変数に保管し明示的にSystem.Runtime.InteropServices.Marshal.ReleaseComObjectで参照カウント減らしてあげる必要があるようです。(最初は、Excel.Applicationだけでよいのではと思っていたのですがダメなようです。)

ExcelのBookを新規作成する

メニューより[プロジェクト] - [参照の追加] を選択し、参照の追加ダイアログを表示します。

タブの中から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

' 既存のExcelファイル
Dim strFilePath As String = "c:\hoge\hoge.xls"

' Workbookを開く
xlBooks.Open(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

bluenote by BBB