Excel VBAを複数バージョンで開発する際の注意点を完全解説!Office 2016〜Microsoft 365対応
生徒
「会社のパソコンはOffice 2016で、自宅はMicrosoft 365なんですが、VBAって同じように動きますか?」
先生
「基本は同じですが、いくつか気をつけないとエラーが出ることがあります」
生徒
「パソコン初心者でも分かるように教えてほしいです…」
先生
「大丈夫です。仕組みと注意点を順番に説明します」
1. Excel VBAはバージョンが違っても使えるのか
Excel VBAは、Office 2016、Office 2019、Microsoft 365のどれでも基本的な仕組みは同じです。そのため、簡単なマクロであれば、ほぼ同じように動作します。
ただし、細かい部分では違いがあり、これを知らないと「昨日まで動いていたのに今日はエラーが出る」という状況になります。
これは、同じ電池式のおもちゃでも、新しい電池と古い電池で動き方が少し変わるのと似ています。
2. Office 2016とMicrosoft 365の大きな違い
Office 2016は、インストールした時点の機能が基本となる買い切り型です。一方、Microsoft 365は常に更新されるサブスクリプション型です。
そのため、Microsoft 365では新しいExcel機能が追加されることがありますが、Office 2016では使えない場合があります。
VBAで新機能を前提にした処理を書くと、古いバージョンでは動かなくなる点に注意が必要です。
3. 複数バージョンで起きやすい代表的なトラブル
複数バージョン環境でよく起きるトラブルには、次のようなものがあります。
- 参照設定の違いによるコンパイルエラー
- Excel関数の対応差
- 32bit版と64bit版の違い
特に初心者の方は、コードが原因だと思い込みがちですが、実は環境の違いが原因というケースが非常に多いです。
4. 参照設定は最小限にする
Excel VBAでは「参照設定」によって追加機能を使いますが、複数バージョンで開発する場合は、できるだけ参照設定を増やさないことが大切です。
標準で使える機能だけを使えば、バージョン差によるエラーを減らせます。
Sub SimpleMessage()
MsgBox "どのバージョンでも動くVBAです"
End Sub
このようなシンプルなコードは、どのExcelバージョンでも安心して使えます。
5. 32bit版と64bit版の違いに注意
Officeには32bit版と64bit版があります。見た目は同じでも、内部の仕組みが少し違います。
特にWindows APIを使うVBAでは、64bit版でエラーが出ることがあります。
初心者のうちは、APIを使わないVBAを書くことで、トラブルを避けやすくなります。
6. Excel関数の違いをVBAで扱うとき
Microsoft 365では新しいExcel関数が追加されていますが、Office 2016では使えないことがあります。
VBAからワークシート関数を呼び出す場合も注意が必要です。
Sub SumSample()
Dim result As Double
result = WorksheetFunction.Sum(1, 2, 3)
MsgBox result
End Sub
このような基本的な関数であれば、どのバージョンでも問題なく使えます。
7. 開発環境は一番古いバージョンを基準にする
複数バージョンで使うVBAを作る場合は、一番古いExcelバージョンを基準に開発するのが安全です。
これは、古い道でも通れる車を選べば、新しい道路でも問題なく走れるという考え方です。
Office 2016で問題なく動けば、Microsoft 365でもほぼ確実に動きます。
8. 動作確認は必ず複数環境で行う
可能であれば、異なるExcelバージョンで動作確認を行いましょう。
難しい場合は、同僚や家族のパソコンを借りて確認するだけでも効果があります。
事前確認を行うことで、配布後のトラブルを大きく減らせます。
9. 初心者でも安心して開発するための心構え
Excel VBAは、環境の違いを理解すれば怖いものではありません。
難しい機能を無理に使わず、基本を大切にすることで、どのバージョンでも安定したマクロを作れます。
環境の違いは失敗ではなく、経験として積み上がっていきます。