課題解決 事例紹介

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

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

Excelを新しいバージョンにしたら、マクロがコンパイルエラーに

背景

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

今まで古いOffice(たいてい2016以前です)を使っていたのが、古いOfficeのサポート切れやハードウェアのリース切れなどをきっかけに環境を最新化した結果、Excelも2021(もしくは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それぞれで切り替え(条件分岐)が必要になります。

 

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

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

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

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

 

当社の修復サービスについて(匿名相談可)

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

その際、どのようなエラーが出るかを把握しているようでしたら、画面のスナップショットをお送り下さい(Excelの画面コピー機能を使うと便利です)。

また、エラーが複数でるような場合、一式お預け戴ければ、原因調査も含めて当社で分析を行います。

費用は、修正箇所や調査有無などケースによりますが、5万円~(着手後2、3日~)で対応できる場合が多いです。

依頼するかまだ分からない段階であれば、匿名で相談を受け付けていますので、ご活用下さい。