当サイトの記事にはプロモーションが含まれています。

excelバージョン確認VBA完全攻略

パソコンパソコン・スマホ教室
スポンサーリンク

あなたが作ったVBAマクロが他人のPCで動かず、「あれ?なんで?」と頭を抱えた経験はありませんか?
その原因の多くはOSやExcelのバージョンの違いに潜んでいます。しかも、ユーザー自身も自分がどのバージョンを使っているのか正確に把握していないことも多いんです。
そこで本記事では、検索意図である「excel バージョン 確認 VBA」を徹底的に解決するために、単なる取得方法の紹介だけでなく、エラー回避や開発効率化に直結する実践的な知識を盛り込みました。この記事を読み終えるころには、あなたは「なぜ今までこれを知らなかったのか」と驚くはずです。

スポンサーリンク

なぜExcelバージョン確認が重要なのか

Excelのイメージ

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)が強力です。以下の手順で取得します。

  1. WMIに対して「Win32_OperatingSystem」クラスを問い合わせる
  2. 戻り値のオブジェクトからCaptionやVersionを参照する
  3. 結果を文字列として取得し、ログやメッセージに活用する

コード例

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開発者への一歩を踏み出してください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました