VBですね。VBでのOffice製品の扱いの基本は、昔も今も同じです。ただし、ExcelやWordのマクロ(VBA)はわかっているとします。
(1)ベタな方法
Excelを起動して、ファイル「B-1.xls」を開き、シート「S-1」のセル「A1」に、数値2を書き込むサンプルが以下です。
(a)デザイナーで、ExcelのClass Libralyを使えるように、参照設定する(プロジェクトの参照タブ)
(b)実装コード
Dim ExcelApp as New ExcelApplication'(Excel本体の起動)
ExcelApp.Visible = True'(起動したExcelをモニターに表示)
Dim Wbook as Excel.Workbook = _
ExcelApp.WorkBooks.Open("B-1のファイルパス")
Dim Wsheet as Excel.Worksheet = _
Wbook.WorkSheets("S-1")'(シート「S-1」は既にあるとします)
With Wsheet
.cells(1, 1) = 2
End With
(b)の宣言部に出てくる、ExcelApplication,Excel.Workbook,Excel.Worksheetという型は、(a)を行う事で使用可能になります。
(b)の宣言部とWithブロックに注目して下さい。cells(1, 1) = 2を行うために、Excelではこれらの部分は不要です。手動でExcelを起動した場合、これらの部分は人間が手動でVBAに与えた事になるので、ActiveSheetとして実現されます。さらにVBAでは、ActiveSheetも省略可能ですよね?。
さらに(b)の宣言部は、コントロールの動的生成と同じです。という事は、ExcelというApplicationは、「標準ではFormに載らない巨大なコントロールと同じだ」というのが、VBでのOffice製品の扱いです。
(2)プロジェクトテンプレートを使う方法
VB.NET以降では、特に(a)の部分を自動化する、新規プロジェクトが用意されています。この方法では開発中に、実際にExcelを見ながらの作業も出来ます。確かに便利ですが、ちょっと癖があるので、ヘルプで基本を押さえる必要はあります。
(3)#1さんの仰る、インスタンス解放
Excel終了時や異常終了時に、(1)のExcelAppなどで使った、メモリーを解放する必要がありますが、VB.NET以降では、これもGC.Collectでかなり簡単に行えます。もっと良い方法はありますが、簡単さで言うと、GC.Collectです。(2)だと恐らくこれも、自動でやってくれます。
お礼
わかりやすい説明、誠にありがとうございます。 大変勉強になります。