.NET Framework でインストールされている Excel のバージョンを確認する
ページ作成日 :
インストールされている Excel のバージョンを取得するには Type.GetTypeFromProgID メソッドを使用して Excel.Application のタイプを取得し、Activator.CreateInstance メソッドでインスタンスを生成します。直接 Excel.Application のインスタンスを生成しないのは、直接参照することによってバージョンに依存してしまうことを回避するためです。この方法をとることにより、最新のバージョンを参照することができるようになります。
あとは生成された application インスタンスから Version プロパティを参照し、バージョンを取得することができます。取得されるバージョンは Excel が内部に持つバージョンです。例えば、Excel 2010 は 14.0, Excel 2013 は 15.0 となります。
また、これらのクラスを使用するには using で「System.Reflection」と「System.Runtime.InteropServices」の設定が必要です。
<summary>
インストールされている Excel のバージョンを取得します。
</summary>
<returns>インストールされている Excel のバージョン。</returns>
public static decimal GetInstallExcelVersion()
{
// Excelアプリケーションに接続
var type = Type.GetTypeFromProgID("Excel.Application");
object application = null;
try
{
application = Activator.CreateInstance(type);
if (application == null)
{
// 未インストールの場合
return 0;
}
// バージョンを取得
var ver =
application.GetType().InvokeMember(
"Version", BindingFlags.GetProperty, null, application, null);
decimal version;
if (!decimal.TryParse(ver.ToString(), out version))
{
return 0;
}
return version;
}
finally
{
if (application != null)
{
Marshal.ReleaseComObject(application);
}
}
}
他のサイトでも同様の説明になっているところがありますが、いくつかのサイトでは Marshal.ReleaseComObject による application の解放をしていないところがあります。これを忘れると Excel のプロセスが残ったままになってしまいますので finally で確実に解放するようにしておきましょう。