事例紹介

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

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

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

背景

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

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

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

 

トラブルの原因

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

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

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

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

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

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

 

 

対処法

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

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

大抵はマイクロソフトのWebページで解説されているので、動かしながらコンパイルエラーが出る箇所を中心に修正すれば、エラーは出なくなります。

 

留意事項(古いPCが混在する環境)

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

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

そうなると、社内的に32bitと64bitが混在することになるので、完全に書き換えてしまうと古いPCで動かなくなります。

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

 

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

エラーがでなくなればそれで良いかというと、実は印刷系が影響を受けることが多い様です。

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

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