Excel VBAのステップインが止まらなくなったり、スプレッドシートの関連付けエラーの原因はコレだった!


こんちくわ あ゛じです。

エクセルで謎のエラーが突然出現!

Win7のサポートが終了した翌日の朝(1/15)、いつものように自動で、AccessからExcel形式でデータのエクスポートをして、エクセルファイルに取り込む処理をしていたPC(もちろんWin10)が、エラーで処理をSTOPしました。


スプレッドシート?

クラウドでエクセルファイルを扱うときに使用する、Googleのソフトだよね?

使ってないんだけど、なんで突然、こんなこと言ってくるのかな?

何回か繰り返してみたけど、同じエラーが発生。

もしかしたらWin7のサポート終了とアップデートの関係で、関連付けがおかしくなったのかな?と、アプリと機能の関連付けを確認。


スプレッドシートの拡張子は.xmlみたいだけど、「Office XML Handler」ってなってる。

これをエクセルに変更すれば良いのかな?とエクセルを選ぼうとするが、エクセルが無い!


う~ん・・・。

なんだか良くわからないけど、おかしくなってるのは確かなので、Officeの修復をしてみる。

「スタートメニュー右クリック」→「アプリと機能」→「該当Officeをクリック」→「変更」。


オンライン修復(インストールしなおすみたい)で、しっかりと修復希望。

が、しばらくして、なにか訴えてる!


オレに英語で話しかけるなとあれほど・・・

でもこの程度なら、なんとなく分かる。

このPCには32bitのOfficeが入ってるので、64bitのOfficeはインストール出来ません的なことですね。

・・・はい?


服&ファッション小物 の 売れ筋ランキング
Amazonランキング

Officeの32bitと64bitは混在出来ないハズだが?

Windowsに32bit版と64bit版があるように、実はOfficeにも32bit版と64bit版がある。

Windowsに合わせなければいけないというワケではなく、2016以前のOfficeは基本的に32bit、最新のOffice2019やOffice365は64bitが自動的にインストールされることになっている。

インストールする時にどっちか選べるワケじゃないんだから、オレのせいじゃないだろ?

おまえが判別してインストールしてるくせに何言ってんだよ!w

でも、英語の文面中央に書かれている、「Microsoft Access Runtime 2013」でピン!と来ました。

このPCにインストールされているOfficeはPersonal 2013で、Accessは使用出来ません。

Accessは2016単体を別にインストールしているんです。

エクセルのバージョンを確認したところ32bitだったので問題無いんですが、Accessのバージョンを確認してみたところ、なんと!64bitでした!


Access Runtime 2013はインストールした記憶があるんですよ。

以前、記事にもしたけど、QRコード作成ソフトを作るときに、うまくいかなくて入れてみたりしたんです。

(あ、オレが犯人の予感・・・)

でもその時にはOffice(32bit)が既にインストールされていたのだから、Runtime 2013も32bitしかインストール出来ないと思うんだけど・・・(謎)

たぶん、Runtime 2013が64bitだったから、その後にインストールしたAccessも64bitが選択されたんでしょう。

このAccessからエクスポートされたエクセル形式のデータファイルを確認してみたところ・・・


予想通り、64bitでした。


朝に発生したエラーは、32bitのエクセルファイルに、この64bitのエクセルファイルのデータをコピペする時に発生していた(マクロ実行中に)と思われます。

でもファイル自体は同じで、32bitとか64bitは開くソフト側で切り替えてる?んじゃないのかな?

なんか良くわからないけど、このあたりに問題があるのは間違いないに決まってる!w


VBAのステップインが止まらない問題も解決!

ならばと、OfficeとAccess関連をアンインストールし、インストールしなおしです。

同じ2016にしたほうが更に相性が良いかもと、Officeは2013ではなく2016で入れなおしました。



今度はどちらも無事、32bitでインストール完了。

Accessからエクスポートしたエクセル形式のファイルも、32bitになっています。

その後、処理を実行してみたところ、エラーが出ず、問題なく動作するようになりました。

謎なのは、それまでの長期間、なんでこのエラーが出なかったのか?ってことです。

同じように32bitと64bitのファイルで処理してたのに・・・。

あと、別件で困ってたことがあったんですが、それも同時に解決しました。

エクセルのVBAで、ステップイン(F8)で1行ずつ進みながら動作を確認中、途中から急に動作が止まらなくなり、最後まで走ってしまうことがあったんです。

(はしる~はしる~おれ~た~ちぃ♪と口ずさむポイントでしたw)

いつも同じ場所(他のファイルを開く)で発生するので、なにかあるんだろうなとは思ってましたが、この、「他のファイル」が今回の64bitエクセルファイルだったんです。

32bitになってからは、ちゃんと動作するようになりました。

(口ずさめなくてちょっと寂しいw)

おわりに

ネットでステップインが止まらなくて困ってるって書き込みはあったけど、解決策は見つからなかったんですよね。

同じような原因かもしれないんで、この情報が役立てば幸いです。

他にも気になってることがあって、エクセルを立ち上げた時に出る以下画面・・・


いやいや、365じゃなくてOffice Personalですから!


一年後に請求しないでくださいよ!?w

※2020/01/22追記

今日になったらOffice365の表示が出なくなりました!

気づいてコッソリ修正したようですw