![見出し画像](https://assets.st-note.com/production/uploads/images/145936804/rectangle_large_type_2_3542e3f7874338d1b9026185aed5a69b.png?width=1200)
Office365に替えたら、Excelマクロが動かない!
背景
今まで古いOffice(たいてい2016以前です)を使っていたのが、古いOfficeのサポート切れやハードウェアのリース切れなどをきっかけに環境を最新化した結果、Excelも2021(もしくは365)にUpdateされますが、この結果従来動いていたマクロがエラーメッセージを出して止まってしまうことが少なくありません。多くの場合、「コンパイルエラー」と表示されます。
![](https://assets.st-note.com/img/1719896944949-FJvUed21oU.png?width=1200)
一部の古いパソコンでは動く、といった場合は、ほぼ64bit化されたExcelが原因と考えられます。
トラブルの原因
普通に関数を中心に使っている分には意識しませんが、プログラム(VBA≒マクロ)でロジックを記述していると、「OSの機能」を呼び出して使うことがあります。
呼ばれたOS(Windows)側では、32bit版と64bit版で別のしくみを使うことがあります。
一般論として、32bitから64bit化されることは進化を表しており、新しい環境ならではの新しい機能なり性能なりを追求しようという動きが出てくるため、古い32bitの環境と切替えているのです。
しかし、一部に互換性がない「進化」を遂げている場合があり、それがエラーの原因になっています。
今使っているExcelがいずれであるかは、次の手順で確認できます(バージョンによって、微妙にメニュー位置が変わっていたりするのは、ご容赦下さい)。
ファイル → アカウントで 「製品情報」を表示
「Excelのバージョン情報」をクリック
![](https://assets.st-note.com/img/1719896986879-4vTwymrV0b.png?width=1200)
![](https://assets.st-note.com/img/1719897021004-2aYjAZHZgS.png?width=1200)
修復方針
1.32bit版に戻す
使えるメモリ域が大幅に減るなどデメリットも多いのですが、一度64bit版をアンインストールした後、32bit版を入れ直すことで動くようになるケースが大半です。
この時、環境によっては32/64bitの選択肢がインストール時に表示されない場合がありますが、手持ちの古いバージョンのOfficeを仮で32bitインストールしておくと、自動的に32bitを継承してくれます。
とはいえ、台数が多い場合や、社内の標準化により勝手に変更できないなど、この手が使えない場合は、64bit版で動く様に修正することになります。
![](https://assets.st-note.com/img/1719897063570-ZPD1cDRhuz.png)
2.動かしながら、エラー箇所を修正
プログラム的に同じ記述をしていても、OS側で勝手に切替えてくれれば良いのですが、呼び出すファイルが異なるので、ファイル名が異なります。
このため、プログラム内において32bitと64bitでどう対応するかを意識して、切替える必要が生じます。
一通りの機能を動かしながら確認するのが手っ取り早いでしょう。
![](https://assets.st-note.com/img/1719897094692-quW2xiYVfL.png)
ケースバイケースで対処法が異なるため、ここで個別に解説することができませんが、大抵はマイクロソフトのWebページで解説されているので、動かしながらコンパイルエラーが出る箇所を中心に修正すれば、エラーは出なくなります。
留意事項(対象ファイル数が多すぎる場合)
大企業の場合、こうした影響を受けるプログラムが数千個に及ぶケースがあります。とても人力で対応できる気がしませんが、分析してみると「本来同じファイルの単なるコピー」「過去3年以上使われていない」・・・のように、今使われていないファイルが意外とあります。これを仕分けるだけで、数分の1に減らせる場合が多いです(あくまで過去の開発業務における経験談ですが)。
ファイル数が多い場合は、いきなり直す前に、棚卸しをお勧めします。
留意事項(古いコンピュータが混在する環境)
多くの組織では、インフラのコンピュータを入れ替えると言っても、全てを入れ替えることは少なく、大抵は一部を残して入れ替えることでしょう。
こうした場合、古いコンピュータに入っていたOfficeにUpdateを適用することになりますが、基が32bitのOfficeの場合、新しいOfficeも32bit版となります。
そうなると、社内的に32bitと64bitが混在することになるので、完全に64bit版用に書き換えてしまうと、今度は32bit環境のコンピュータでコンパイルエラーが出てしまいます。
その場合、32/64bitそれぞれで切り替え(条件分岐)が必要になります。
その他留意(印刷物への影響)
エラーがでなくなればそれで良いかというと、他にも影響を受ける場合が少なく有りません。特に、印刷系が影響を受けることが多い様です。
当社で最新版対応を行う場合、全てのロジックが一通り動く様に検査し、(コンパイルエラーに限らず)エラーが出ないことを確認した上で、全ての印刷物の新旧比較を行います。
この新旧比較時に、かなりの確率で印刷のズレが発見されるので、要注意です。
いよいよ行き詰まったら
大抵は、ある日突然全コンピュータが最新化するわけではなく、旧環境も残るはずです。前述の方法を試してもうまくいかない場合、量がありすぎて手に追えないときは、Excelの専門業者に相談する方が早いケースが大半です。
さし当たって、現実的な対処方針の提示くらいは得られる筈です。