インストールされているExcelのバージョンによって処理を分ける方法
Visual C#で、Excelファイルを読み込むようなことを考えています。Excelファイルの読み込み用のライブラリは、ExcelアプリケーションをCOM経由で呼ぶ想定です。この場合、使用するライブラリ(Microsoft Excel 12.0 Object Libraryなど)は、動作環境によって切り替える必要があります。
Excel2007がインストールされている環境では"Microsoft Excel 12.0 Object Library"、Excel2003の環境では、"Microsoft Excel 11.0 Object Library"など。
動作環境が複数あり、各々のPCにインストールされているExcelのバージョンが異なる場合、インストール済みのExcelバージョンを判断する方法を調査してみました。
次のようにすると、Excelバージョンによって、処理を分岐することが出来ました。
using System; using System.Reflection; // Excelアプリケーションに接続 Type classType = Type.GetTypeFromProgID("Excel.Application"); object app = Activator.CreateInstance(classType); if (app == null) { // 未インストールの場合 } // バージョンを取得 object versionObj = app.GetType().InvokeMember( "Version", BindingFlags.GetProperty, null, app, null); string version = versionObj.ToString(); if ("11.0".Equals(version)) { // Office2003インストール済みの場合 } else if ("12.0".Equals(version)) { // Office2007インストール済みの場合 } else if ("14.0".Equals(version)) { // Office2010インストール済みの場合 }