あなたが作ったVBAマクロが他人のPCで動かず、「あれ?なんで?」と頭を抱えた経験はありませんか?
その原因の多くはOSやExcelのバージョンの違いに潜んでいます。しかも、ユーザー自身も自分がどのバージョンを使っているのか正確に把握していないことも多いんです。
そこで本記事では、検索意図である「excel バージョン 確認 VBA」を徹底的に解決するために、単なる取得方法の紹介だけでなく、エラー回避や開発効率化に直結する実践的な知識を盛り込みました。この記事を読み終えるころには、あなたは「なぜ今までこれを知らなかったのか」と驚くはずです。
なぜExcelバージョン確認が重要なのか
バージョン違いによる予期せぬエラー
Excel 2010、2016、365など、見た目は似ていても内部の仕様やサポート関数が微妙に異なるため、同じVBAコードが動作しないことがあります。特に以下のようなケースではバージョン確認が必須です。
- 古いExcelでは存在しないオブジェクトを参照している
- 64bit版と32bit版でDeclare文の記述方法が異なる
- Windows 10と11でAPI呼び出しの挙動が変わる
トラブルシューティングの迅速化
「相手の環境が不明」のまま原因を探すのは、暗闇で鍵を探すようなもの。ログに環境情報を残しておけば、トラブル発生時の切り分けが圧倒的に速くなります。
VBAでExcelとOSのバージョンを確認する方法
Excelバージョン確認Applicationオブジェクト
最も手軽なのがApplication.Versionです。例えば以下のコードをImmediateウィンドウで実行すると、数値でバージョンが返ります。
Debug.Print Application.Version
返却値と対応するExcelの一覧を知っておくと便利です。
| 返却値 | Excelバージョン |
|---|---|
| 14.0 | Excel 2010 |
| 15.0 | Excel 2013 |
| 16.0 | Excel 2016 / 2019 / 365 |
さらにApplication.BuildやApplication.OperatingSystemも活用すれば、より詳細な環境を把握できます。
OSバージョン確認WMIを利用
Windows環境の詳細な情報を得たい場合はWMI (Windows Management Instrumentation)が強力です。以下の手順で取得します。
- WMIに対して「Win32_OperatingSystem」クラスを問い合わせる
- 戻り値のオブジェクトからCaptionやVersionを参照する
- 結果を文字列として取得し、ログやメッセージに活用する
コード例
Dim objWMI As Object
Dim colOS As Object
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set colOS = objWMI.ExecQuery("Select * from Win32_OperatingSystem")
Dim os As Object
For Each os In colOS
Debug.Print os.Caption, os.Version, os.OSArchitecture
Next
これで「Windows 10 Pro 64bit」や「Windows 11 Home 64bit」といった情報が取得可能です。
実務で役立つ応用テクニック
エラーログに環境情報を自動出力
マクロがエラーで停止したとき、ログにExcelバージョン・OSバージョン・使用者名を同時に書き込む仕組みを入れると、原因究明のスピードが段違いに上がります。特に複数人で使う業務マクロでは必須です。
条件分岐で互換性対策
バージョンごとに動作が違う場合、If文で条件分岐させるのが実践的です。
If Application.Version < 16 Then
'古いExcel向けの処理
Else
'新しいExcel向けの処理
End If
64bitと32bit対応を見極める
Declare文を使うとき、32bitと64bitで記述が違うのは有名な落とし穴です。環境情報を自動で判別し、適切に切り替えるコードを書いておくとトラブルを未然に防げます。
excelバージョン確認VBAに関する疑問解決
Q1: Excel 365は常に「16.0」と表示されるの?
はい。Excel 365は内部的に「16.0」で固定されています。細かな違いはビルド番号で管理されているため、Application.Buildで確認しましょう。
Q2: Mac版Excelでも同じ方法で確認できる?
基本的にApplication.VersionはMacでも動作します。ただし、WMIはWindows固有の仕組みなので利用できません。Macの場合はOSバージョン取得には別アプローチが必要です。
Q3: OSが英語表記で返ることがあるのはなぜ?
WMIの戻り値はシステムロケールに依存します。ユーザーのPC設定が英語なら「Microsoft Windows 11 Home」といった英語表記になります。国際利用を想定するなら翻訳処理を追加しましょう。
まとめ
VBAでExcelとOSのバージョンを自動確認する仕組みを作ることは、マクロ開発の品質を飛躍的に高める秘訣です。
単に「動けばいい」から「誰の環境でも安心して動く」に進化させることで、あなたのマクロは周囲から信頼される存在になります。
今すぐ記事の方法を取り入れ、トラブルに強いプロフェッショナルなVBA開発者への一歩を踏み出してください。




コメント