事例紹介

Office365に替えたら、Excelマクロが動かない!
~ 意外と気付かない、32/64bitの違い ~

背景 Office2010のサポート切れに伴い、Microsoft365(Office365)を導入。
すると、いくつかのExcelマクロがエラーで動かなくなった。
原因 Office2019登場以降、365も標準が64bitになったため、一部のマクロでエラーが発生する。
対策 原理的に32bitか64bitかに依存しているものがあり、それぞれの環境に合わせた記述に変更すれば、元通り動く様になる。
2010からのUpdateの場合は32bitのままなので、両方の環境が混在する事になる点に留意。

Excelのバージョンアップで、マクロがコンパイルエラーに

背景

複数のお客様で起こった共通のトラブルです。

今まで古いOffice(たいてい2010です)を使っていたのが、2010のサポート切れやハードウェアのリース切れなどをきっかけに環境を最新化した結果、Excelも2019(もしくは365)にUpdateされますが、この結果従来動いていたマクロがエラーメッセージを出して止まってしまうことが少なくありません。多くの場合、「コンパイルエラー」と表示されます。

Office365にしたら、コンパイルエラー発生

一部の古いパソコンでは動く、といった場合は、ほぼ64bit化されたExcelが原因と考えられます。

 

トラブルの原因

普通に関数を中心に使っている分には意識しませんが、プログラム(VBA≒マクロ)でロジックを記述していると、OSの機能を呼び出して使うことがあります。

わかりやすい例としては、キーボーと上のあるキーを押された場合の認識やファイルを開くといった挙動はExcel固有のものではなく、他のアプリケーションからも共通して使われる機能ですから、アプリケーションごとに開発をするのではなく、OSの機能を呼び出すことで実現しています。

こうした場合、呼ばれたOS(Windows)側では、32bit版と64bit版で別のしくみを使うことがあります。

これは、一般論として、32bitから64bit化されることは進化を表しており、新しい環境ならではの新しい機能なり性能なりを追求しようという動きが出てくるため、古い32bitの環境と切替えているのです。

今使っているExcelがいずれであるかは、次の手順で確認できます。

  1. ファイル → アカウントで 「製品情報」を表示
  2. 「Excelのバージョン情報」をクリック

 

 

修復方針

32bit版に戻す

一度64bit版をアンインストールした後、32bit版を入れ直します。

この時、環境によっては32/64bitの選択肢がインストール時に表示されない場合がありますが、手持ちの古いバージョンのOfficeを仮で32bitインストールしておくと、自動的に32bitを継承してくれます。

とはいえ、台数が多い場合や、社内の標準化により勝手に変更できないなど、この手が使えない場合は、64bit版で動く様に修正することになります。

 

動かしながら、エラー箇所を修正

プログラム的に同じ記述をしていても、OS側で勝手に切替えてくれれば良いのですが、呼び出すファイルが異なるので、ファイル名が異なります。

このため、プログラム内において32bitと64bitでどう対応するかを意識して、切替える必要が生じます。

ケースバイケースで対処法が異なるため、ここで個別に解説することができませんが、大抵はマイクロソフトのWebページで解説されているので、動かしながらコンパイルエラーが出る箇所を中心に修正すれば、エラーは出なくなります。

※マクロを作った人が居ない等、手に負えない状況にあるようでしたら、修正代行/引き継ぎのお手伝い(相談は無料です)もしています。

 

留意事項(古いコンピュータが混在する環境)

多くの組織では、インフラのコンピュータを入れ替えると言っても、全てを入れ替えることは少なく、大抵は一部を残して入れ替えることでしょう。

こうした場合、古いコンピュータに入っていたOfficeにUpdateを適用することになりますが、基が32bitのOfficeの場合、新しいOfficeも32bit版となります。

そうなると、社内的に32bitと64bitが混在することになるので、完全に64bit版用に書き換えてしまうと、今度は32bit環境のコンピュータでコンパイルエラーが出てしまいます。

その場合、32/64bitそれぞれで切り替え(条件分岐)が必要になります。

 

その他留意(印刷物への影響)

エラーがでなくなればそれで良いかというと、他にも影響を受ける場合が少なく有りません。特に、印刷系が影響を受けることが多い様です。

当社で最新版対応を行う場合、全てのロジックが一通り動く様に検査し、(コンパイルエラーに限らず)エラーが出ないことを確認した上で、全ての印刷物の新旧比較を行います。

この新旧比較時に、かなりの確率で印刷のズレが発見されるので、要注意です。

なお、自分で手に負えなくなったら、修復サービス(相談は無料です)を行っていますので、ご検討下さい。