現在ログインしていません。
新規アカウント作成
ログイン

C#でCOMオブジェクトを取得する

VBではCreateObjectをCOMオブジェクトを取得できますが、C#にはこれに直接相当する機能がありません。

C#でCOMオブジェクトを生成取得するにはType.GetType.GetTypeFromProgIDを使って次のようにします。この例ではExcelを生成して表示します。

//Excelを生成・取得
Type comType = Type.GetTypeFromProgID("Excel.Application");
dynamic oExcel = Activator.CreateInstance(comType);

//Excelを操作(ここでは表示して、3秒待つだけ)
oExcel.Visible = true;
Task.Delay(3000).Wait();

//Excelを終了
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
■リスト1:Excelを表示する。

生成したオブジェクトをdynamicで受け取ると、その後の操作を簡単に記述できて楽です。 C# 4.0より前のバージョン(Visual Studio 2008以前に相当)にはdynamicがないので、リフレクション機能のSystem.Type.InvokeMemberメソッドなどで操作する必要があり面倒です。この場合はVBを使用することも検討しましょう。