VB Excel操作テクニック.NET

VBでExcelを読込み、操作するテクニック集。貼付だけで機能するソースコードも公開。
ExcelSheet(新規シート)を追加する
ExcelSheet(新規シート)を追加する

ExcelSheet(新規シート)を追加する

操作対象のExcelファイルに対して新規シートを追加します。
以下の処理では、先頭から2番目の位置に2シート挿入しています。

シートの追加にはAddメソッドを使用しています。
Addメソッドの記述方法と引数は以下の通りです。

' Before:ここで指定したシートの前に新規シートが追加されます。
' After :ここで指定したシートの後ろに新規シートが追加されます。
' Count :追加するシート数です。(規定値は1)
' Type  :WorkSheet以外を追加する際に指定しますが、ここのページでは規定値を使います。

xlSheets.Add(Before, After, Count, Type)
'

注意する点は、このAddメソッドがObject型の変数を返す関数であるということです。
以前「COMオブジェクトを解放する」でも解説したように、メソッドの戻り値とはいえ、生成されたインスタンスはすべて解放してあげないといけません。

以下のコードの「※要注意」と書かれた箇所では、Object型の変数を用意して戻り値を受け止め、そして最後の解放処理でリリースするようにしています。
ここを省略して、直後にコメントアウトしてあるように「xlSheets.Add(・・・」と直接記述してしまうと、タスクマネージャからExcelプロセスは消えずに居座り続けます。


' Excelアプリケーション
Dim xlApp As Application = Nothing

' ワークブック
Dim xlBooks As Workbooks = Nothing
Dim xlBook As Workbook = Nothing

' シート
Dim xlSheets As Sheets = Nothing
Dim xlSheet As Worksheet = Nothing

' Excelを開く
xlApp = New Application
xlApp.DisplayAlerts = False
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open("対象Excelまでのパス")
xlSheets = xlBook.Worksheets
xlSheet = DirectCast(xlSheets(1), Worksheet)   ' 1シート目を操作対象に設定

' シート追加(※要注意)
Dim xlAddSheets As Object = Nothing
xlAddSheets = xlSheets.Add(, xlSheet, 2)
' xlSheets.Add(, xlSheet, 2)

' Excelを表示して3秒間表示
xlApp.Visible = True
System.Threading.Thread.Sleep(3000)

' ■■■以下、COMオブジェクトの解放■■■

' Sheetのクローズ処理
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlAddSheets)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)

' Excelのクローズ処理
xlBook.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)

' アラートを戻す
xlApp.DisplayAlerts = True

' ExcelApplicationを閉じる
xlApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

'

«