開いているExcelのバージョンの違いによって処理を変えるマクロ
|
|
マクロ / VBA Application, IF, Select, Version |
おおよそ3年ほどで新しいバージョンが出ているExcelです。新しいバージョンになれば色んな機能や関数が増えてどんどん便利になっています。
しかしその新しい関数を古いバージョンで開くと正常に動かなかったりします。
それはVBAにも言えることで、動かない可能性が出てきます。しかしながら人に提供する場合は、そのユーザーがどのバージョンを使っていて、いつ更新するかまでは管理できません。
ですので、コードの中で開いているバージョンを確認し、処理を分岐させてしまいます。
Applicationオブジェクト
Application.Version
これでExcelのバージョンが取得できます。
Excelのバージョン | Versionプロパティの戻り値 |
---|---|
Excel2016 | 16.0 |
Excel2013 | 15.0 |
Excel2010 | 14.0 |
Excel2007 | 12.0 |
Excel2003 | 11.0 |
Excel2002 | 10.0 |
Excel2000 | 9.0 |
Excel97 | 8.0 |
Excel95 | 7.0 |
Excel5.0 | 5.0 |
寄稿時の最新バージョン2016なのでここまでですが、それより新しいのが出ていればWikiにも載っていますのでご参照ください。
たまたまExcel2016と16.0が同じようになっていますが、2016だから16、という訳じゃないので^^;
サンプル
IFで指定のバージョンかどうか。
If Application.Version = "16.0" Then
MsgBox ("2016")
Else
MsgBox ("2016以外")
End If
戻り値は文字列型ですので16とせずに”16.0″とします。
各バージョン毎に処理を変えたいのであればこうですかね。
Select Case Application.Version
Case "11.0"
MsgBox ("Excel2003です")
Case "12.0"
MsgBox ("Excel2007です")
Case "14.0"
MsgBox ("Excel2010です")
Case "15.0"
MsgBox ("Excel2013です")
Case "16.0"
MsgBox ("Excel2016です")
End Select