Excel VBA 異なるExcelバージョンやファイル形式で正しく動作するか確認

 

ExcelVBA  作成したマクロが異なるExcelのバージョンやファイル形式でも正しく動作するか確認。「互換性チェック」は、VBAコードや機能が古いバージョンでも問題なく使えるかを検証するために行います。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA  バージョン確認|シーン

以下のシーンで利用します。

1. 異なるExcelバージョン(例: 2007, 2013, 2016, 2019, 365)で動作確認する。

2. 「.xlsm」「.xls」「.xlsx」などのファイル形式の制約を確認する。

3. VBAの新機能が旧バージョンでは使えないかどうかをチェックする。

4. マクロが無効になる環境(例: Mac版ExcelやWeb版Excel)での対策を考える。

 

Excel VBA  バージョン確認サンプルコード

Excelのバージョンを確認

Option Explicit

Sub CheckExcelVersion() '標準モジュール
    MsgBox "現在のExcelバージョン: " & Application.Version, vbInformation, "バージョン情報"
End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

Excel バージョン Version 値
Excel 2007 12.0
Excel 2010 14.0
Excel 2013 15.0
Excel 2016 16.0
Excel 2019 16.0
Excel 365 16.0
注意

Excel 2019以降は 16.0 なので、より詳細な情報が必要な場合は Application.Build を使います。

マクロ対応形式(.xlsm)かどうかをチェック
VBAが実行可能な形式 (.xlsm など) で保存されているかを判定できます。

Option Explicit

Sub CheckMacroEnabledWorkbook() '標準モジュール
    If ThisWorkbook.FileFormat = xlOpenXMLWorkbookMacroEnabled Then
        MsgBox "このファイルはマクロ有効ブック(.xlsm)です。", vbInformation, "互換性チェック"
    Else
        MsgBox "このファイルはマクロ無効ブック(.xlsx)です!マクロを実行できません。", vbExclamation, "互換性チェック"
    End If
End Sub

.xlsm → マクロが実行可能
.xlsx → マクロが削除されるので注意

古いExcelバージョンで動作しない関数をチェック
例えば、Application.TextJoin はExcel 2019以降で導入されたため、古いバージョンではエラーになります。
バージョンごとに処理を分岐させるには、以下のようにします。

Option Explicit

Sub CheckFunctionCompatibility() '標準モジュール
    If Val(Application.Version) < 16 Then
        MsgBox "このバージョンではTEXTJOIN関数は使用できません。", vbExclamation, "互換性チェック"
    Else
        MsgBox "このバージョンではTEXTJOIN関数が使用可能です。", vbInformation, "互換性チェック"
    End If
End Sub

新しい関数を使う前に、バージョンをチェックして分岐処理を入れる。
代替手段(ループを使うなど)を考えておく。

Mac版やWeb版での互換性チェック
MacやWeb版のExcelでは、ActiveXコントロール や Application.FileDialog など一部の機能が動作しません。
Macで実行中かどうかを判定するには、Application.OperatingSystem を使います

Option Explicit

Sub CheckIfMac() '標準モジュール
    If InStr(1, Application.OperatingSystem, "Mac", vbTextCompare) > 0 Then
        MsgBox "このマクロはMacでは動作しない可能性があります。", vbExclamation, "互換性チェック"
    Else
        MsgBox "Windows環境で動作しています。", vbInformation, "互換性チェック"
    End If
End Sub
Macで動かない機能

ActiveX コントロール(ボタンやリストボックスなど)
FileDialog(ファイル選択ダイアログ)
Shell(コマンドプロンプトの実行)

注意点

・新しいExcelの機能(TEXTJOINなど)は、古いバージョンでは使えない。
・マクロを使用する場合は、ファイル形式を .xlsm で保存する。
・MacやWeb版では、ActiveXや一部のAPIが動作しない。
・Excel 2019以降は Version = 16.0 で統一されているため、Build も確認するとより正確

 

Excel VBA  バージョン確認まとめ

チェック内容 方法
Excelのバージョン確認 Application.Version
マクロ対応形式か確認 ThisWorkbook.FileFormat
互換性のない関数のチェック If Val(Application.Version) < xx Then で分岐
Macでの動作判定 Application.OperatingSystem
Web版で動作しない機能 ActiveXコントロール や Shell

VBAマクロを作成するときは、異なるExcel環境での互換性を考慮し、事前にチェック処理を入れることが重要

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問