C#でEXCELオートメーションサーバーを使う~ EXCELのオートメーションサーバーは、もうライフワークのよう・・(^^; 今まで、C++からEXCELオブジェクトを利用してきましたが、C#も同様にEXCELを利用できます。 C++ではVariant型にOLEインターフェースがサポートされていたのですが、C#では EXCELのタイプライブラリを直接取り込むため、コードとの親和性が良いです。 ■準備 1 IDEのプロジェクトメニューより参照の追加を選択。 2 COMインポートタブでMicrosoft Excel を選択して追加。 3 プロジェクトマネージャで、Referencesを見ると Excel.dll と Office.dll が追加されている。 4 using System.Reflection; をソースに追加。 この準備が完了すると、現在のプロジェクトで、いつでもEXCELが使用できます。 ■Excelオブジェクトを作る。 Excel.Application exApp=new Excel.Application(); Excelオブジェクトの生成時に、EXCELがプロセスとして起動されます。 ■Excelの終了 Excelを終了させるには、 exApp.Quit(); Excelは、これで終了します。 しかし、Windowsのプロセスリストを見ると、Excelが残っている場合があります。 これは、アクセスしたクラス、つまり呼び出し側で、Excelオブジェクトへの参照が残っているため、 C#のガベージコレクタが働かないことによります。 これを解決するためには、使用したExcelへの変数にNullを代入し、 強制的にガベージコレクタを動作させとよいです。 exApp.Quit(); exApp=null; GC.Collect(); ■Workbooks以下のオブジェクト Excelのオブジェクト階層は、そのまま使用可能なので、ExcelVBAのレファレンスが利用できます。 プロジェクトマネージャのReferencesで、Excel.dllをクリックするとタイプライブラリが表示されるので、 引数や戻り値の型、オブジェクトで使用できる定数等が見ることができます。 Application └Workbooks └Workbook └Worksheets └Worksheet └Range 例) Excel.Workbooks wbs=exApp.Workbooks; // アプリケーションからWorkbooksの取得 Excel._Workbook wb=wbs.Add(Missing.Value); // WorkbooksにWoekbookを作成 Excel.Worksheet ws=wb.Worksheet; // Worksheetsの取得。 詳しくはExcelVBAのレファレンスを参照してください。