VBAでExcelのバージョン番号を取得する

バージョンによる動作の違い

VBAのマクロを使用する場合、Excelのバージョンによってはマクロの動作に違いが生じることがあります。

たとえばExcel 2007以降で追加されたプロパティは、Excel 2003以下では認識できません。使用する関数によっては引数が変更されている場合もあります。

つまり上位バージョンでは正常動作するコードが下位のバージョンでは動作しない可能性があるのです。

複数バージョンのExcelが混在するような環境では、マクロを実行する前にExcelのバージョンを取得し分岐処理を入れるのが良いでしょう。

Excelのバージョン番号の取得方法

ExcelのバージョンはApplicationオブジェクトのVersionプロパティで取得できます。

Sub homuhomu()
    MsgBox Application.Version
End Sub

バージョン番号一覧

バージョン毎のVersionプロパティの戻り値は、以下のようになります。

マクロ実行対象のExcel Versionプロパティの戻り値
Excel 2010 14.0
Excel 2007 12.0
Excel 2003 11.0
Excel 2002 10.0
Excel 2000 9.0
Excel 97 8.0
Excel 95 7.0
Excel 5.0 5.0

Excel 2013は「15.0」ですかね?

Versionプロパティの戻り値は文字列型

Versionプロパティの戻り値は文字列型です。

Microsoft Excel のバージョン番号を表す文字列型 (String) の値を返します。

Application.Version プロパティ (Excel)

実際に使用する場合は、数値型に変換して扱うのが良いと思います。
関数化しちゃうと楽かな。

' Excelのバージョン番号を取得し、数値に変換して返す
Function GetAppVer() As Interger
    GetAppVersion = CInt(Application.Version)
End Function
かんたんプログラミング Excel2003 VBA コントロール・関数編
大村 あつし
技術評論社
売り上げランキング: 129,235