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

 

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

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

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

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

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

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

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

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

 

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

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

Excelのバージョンを確認

Option Explicit

Sub CheckExcelVersion() '標準モジュール
    MsgBox "現在のExcelバージョン: " & Application.Version, vbInformation, "バージョン情報"
End Sub
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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。