■ サンプル
Officeバージョン取得処理
using System.Reflection;
public enum OfficeVersion
{
None,
NotSupportedVersion,
Office2000,
Office2002,
Office2003,
Office2007,
Office2010,
}
public OfficeVersion GetOfficeVersion(string applicationID)
{
// Excelアプリケーションに接続
var type = Type.GetTypeFromProgID(applicationID);
var application = Activator.CreateInstance(type);
if (application == null)
{
// 未インストールの場合
return OfficeVersion.None;
}
// バージョンを取得
var ver =
application.GetType().InvokeMember(
"Version", BindingFlags.GetProperty, null, application, null);
double version;
if(!Double.TryParse(ver.ToString(), out version))
{
return OfficeVersion.None;
}
else if (version >= 14.0)
{
// Office2010インストール済みの場合
return OfficeVersion.Office2010;
}
else if (version >= 12.0)
{
// Office2007インストール済みの場合
return OfficeVersion.Office2007;
}
else if (version >= 11.0)
{
// Office2003インストール済みの場合
return OfficeVersion.Office2003;
}
else if (version >= 10.0)
{
// Office XP(2002)インストール済みの場合
return OfficeVersion.Office2002;
}
else if (version >= 9.0)
{
// Office 2000インストール済みの場合
return OfficeVersion.Office2000;
}
else
{
// Office 2000より前のバージョン
return OfficeVersion.NotSupportedVersion;
}
}
使用例
private void button1_Click(object sender, EventArgs e)
{
var excelVersion = this.GetOfficeVersion("Excel.Application");
string result;
switch (excelVersion)
{
case OfficeVersion.Office2000:
result = "Office2000";
break;
case OfficeVersion.Office2002:
result = "Office2002";
break;
case OfficeVersion.Office2003:
result = "Office2003";
break;
case OfficeVersion.Office2007:
result = "Office2007";
break;
case OfficeVersion.Office2010:
result = "Office2010";
break;
default:
result = "No Excel";
break;
}
this.label1.Text = result;
}