
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エキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
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
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エキスパート」をご確認ください。