VB.NETからExcelファイルにデータを書き込んだり、
その逆にExcelファイルからデータを取得することでアプリケーションの幅が広がります。
DBを用意しなくてもExcelをDBと見立ててアプリケーションの作成なんかもできてしまいます。
ここではその方法をお伝えします。

Excelの既存ファイルを開く
Dim xlApplication As New Excel.Application() Dim xlBooks As Excel.Workbooks xlBooks = xlApplication.Workbooks '既存のブックを開く xlBooks.Open("C:\Hoge.xls") 'Excelを非表示にする xlApplication.Visible = False
Exelを新規ファイルで開く
Dim xlBooks As Excel.Workbooks Dim xlBook As Excel.Workbook Dim xlSheets As Excel.Sheets Dim xlSheet As Excel.Worksheet Dim xlRange As Excel.Range Dim xlApp As Excel.Application xlApp = CreateObject("Excel.Application") xlApp.Visible = True 'Excelから読み込み xlBooks = xlApp.Workbooks 'Excelの非可視化 xlApp.Visible = False '新規のファイルを開く xlBook = xlBooks.Add() xlSheets = xlBook.Worksheets xlSheet = DirectCast(xlSheets.Item(1), Excel.Worksheet)
ExcelのCOMObjectを解放する部品
引数に解放したいもの(SheetやRange)を入れてください。
解放する時は作成した順と逆に解放することがポイントです。
そうしないと、プロセスにEXCELが大量に作成され続けてしまいます。
作成順
Dim xlBooks As Excel.Workbooks
Dim xlBook As Excel.Workbook
Dim xlSheets As Excel.Sheets
Dim xlSheet As Excel.Worksheet
解放
ReleaseCOMObject(xlSheet)
ReleaseCOMObject(xlSheets) xlBook.Close()
ReleaseCOMObject(xlBook)
ReleaseCOMObject(xlBooks)
'COMオブジェクトの解放 Private Shared Sub ReleaseCOMObject(Of T As Class)(ByRef objCom As T) 'オブジェクトが空の場合処理を抜ける If objCom Is Nothing Then Return End If Try 'パラメタがCOMオブジェクトかチェック If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then 'Runtime Callable Wrapperの解放を行う Dim cntRCW As Integer = System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom) If cntRCW <> 0 Then '解放しきれていない場合、メッセージを出力 MessageBox.Show("解放エラー") End If End If Finally objCom = Nothing End Try End Sub
コメントを残す