VB Excel操作テクニック.NET

VBでExcelを読込み、操作するテクニック集。貼付だけで機能するソースコードも公開。
コンストラクタとデストラクタ
コンストラクタとデストラクタ

コンストラクタとデストラクタ

ひとつ前の「クラスの作成」ページにも記述しましたが、Usingでの使用を可能にするため、
作成するクラスにはNew()とDispose()を記述します。

コンストラクタとデストラクタの概要についてはこちらに記述しました。
使い分けの方法や各メソッドの意味など確認したい方は一読ください。

#Region "コンストラクタ"

    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks>
    ''' Excelアプリケーションを起動する
    ''' </remarks>
    Public Sub New()
        xlApp = New Application()
    End Sub

#End Region

#Region "デストラクタ"

    Protected Overrides Sub Finalize()
        MyBase.Finalize()

        ' Disposeが呼ばれてなかったら呼び出す
        If disposedValue = False Then
            Me.Dispose()
        End If
    End Sub

#End Region

#Region "Dispose"

    Private disposedValue As Boolean = False        ' 重複する呼び出しを検出するには

    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: 他の状態を解放します (マネージ オブジェクト)。
            End If

            ' TODO: 共有のアンマネージ リソースを解放します
            ' ※※※※※※※※※※※※※※※※※
            ' ※ ここにリソースの解放を書く! ※
            ' ※※※※※※※※※※※※※※※※※

        End If
        Me.disposedValue = True
    End Sub

#Region " IDisposable Support "

    ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
    Public Sub Dispose() Implements IDisposable.Dispose
        ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub

#End Region

#End Region


'

■ New(コンストラクタ)
1行目から13行目は、ほかのクラスでNew()を宣言したときに呼ばれる処理です。
コンストラクタNew()では、クラス変数で宣言したxlAppのインスタンスを生成します。

■ Finalize(デストラクタ)
ソース内の、「#Region “デストラクタ”」で囲まれた箇所は、New(コンストラクタ)とは対象に、クラスが破棄されるときに実行される処理です。しかし、VB.NETではガベージコレクタが機能しているため、ほとんどのクラスで実装する必要はありません。
明示的に解放したいリソースや、.NET Frameworkの管理していないアンマネージリソースを使用するときに実装することがあります。

■ Dispose
ソース内の、「#Region “Dispose”」で囲まれた箇所は、クラスのインスタンスが破棄されるときに呼ばれる処理です。
Finalize(デストラクタ)と混同してしまいがちですが、自動的に呼ばれる処理を記述するFinalizeに対して、Disposeは明示的に呼ぶ必要のある処理を記述します。
なんだかいろいろ書いてありますが、私が手書きで書いたわけではなく、VisualStadio 2005(だったと思います…。)で自動生成されたソースを流用しました。

デストラクタは、とりあえず自動生成されたソースコードだけです。
後でメソッドのカテゴリー内で公開している、リソース解放メソッドを実装します。

なぜ、VisualStadio 2005 のソースを流用したかというと、
私は2010での開発経験はあまりありません。
ですので、どうやったら自動でソースコードを追加してくれるかわかりませんでした。
(2005ではクラスに IDisposable を実装すれば自動で作ってくれてたような・・・。)

クラスの準備はこれでOKです。
あとはプロパティ・メソッドカテゴリーから、
必要な処理を抜粋すれば、Excelの操作が可能になります。

« »