休み明けにExcelの動きが突然おかしなことに
Excelシートを開いただけで、画像がおかしなことに
Excelマクロ(VBA)で制御していない箇所で、突然異常発生
先日の連休が明けてから、立て続きに「突然動きがおかしくなった」というお客様からの問い合わせが相次ぎました。
例を挙げると「ファイルを自動で読み込む際にエラーが出た」「雛形ファイルの画像が1枚を残して消えてしまった」「行削除したら、関係ない行のオブジェクトが消えてしまった」・・・といったものです。
いずれも、マクロ(VBA)を使った操作をしていない部分のため、ロジックを修正して直るものではなさそうです。
早速当社内で再現を試みましたが、正常に動いてしまいます。他のコンピュータ(5台程度)でも試したところ、一部は再現されることがわかりました。どうやら、起こる/起こらないがコンピュータにより違うようです。。
まずは検証・・・異常原因の切り分け
他のコンピュータでも再現するか?
そんな時は、まず問題の切り分けです。原因が作り方(マクロの組み方や設定方法)にあるのか、コンピュータ側にあるかの、慎重に調べていきます。
幸い全てのケースで他のコンピュータ環境があったので、他のコンピュータでも再現するかどうかを調べて貰ったところ、いずれのケースでも「起こるコンピュータは一部で、他では動く」とのこと。当社と同じことが起こりました。
こうなると、環境依存ということになりますが、だからといって放置しておくわけにはいきません。何をすれば動く様になるかを探る必要があります。
動くコンピュータと、動かないコンピュータの違いは何か?
更に質問をしていくと、動かないとされるコンピュータでも、「連休前は動いていた」との回答です。そうなると、怪しいのはWindowsUpdateによる更新です。これを放置しておくと、いずれ全てのコンピュータで「動かない」状態となってしまいます。
試しに、OSとExcelのバージョン(ビルド番号)を調べて貰ったところ、あるバージョン(ビルド番号)の場合のみ起こるようです。
次に、Windowsのビルド番号の問題か、Excelのビルド番号の問題かを切り分けますが、上の表を見る限り、不具合発生コンピュータと同じビルド番号の他のコンピュータでは正常に動いていることから、Excelのビルド番号に原因があることがわかりました。
対処方法
対処法1:更新をキャンセルする(前回に戻す)
面倒ですが、Windowsの更新設定の画面から以前のバージョンに戻すことで、直ります。とはいえ、いずれ次のUpdateが入ると、同じ事象が起こるかも知れません。また、前回のバージョンアップから時間が経ちすぎると、復旧できないケースもあります。
対処法2:使い方(運用)で工夫する
今回のケースのうち、行削除により無関係な行が影響するケースについては、特定の操作をしない限り起こらないこと、リカバリーの方法が見いだせたことから、運用での回避を取って戴くことになりました。Microsoft社がこれをバグと認識していれば、次のUpdateで修正されていることでしょう。
対処法3:ロジックを修正する
企業で使っている多くのケースでは、当該システムは業務に必要不可欠な存在となっています。今更「諦めて手作業に戻す」とか「しばらく様子を見る」と言う選択肢がとりづらいのです。
そこで、(仮にExcelのバグだとしても)問題を回避できるような方法を探りながらロジックの修正を行うことになります。
今回「複数あった画像が1つになる」問題は、同じセルに全画像が集まっていたため、1枚に見えていたものです。何度かやり方を変えて事象を観察している中で、「おまじない」的なロジックを挟むことで回避できることがわかり、1日で修正が終わりました。
その他の、「突然xxxできなくなった」事例
前述の例は、Windows(およびOffice)の自動更新(Update)の影響に依るものでしたが、クラウドでも同様の「突然xxx」が起こりえます。
例えば、Excelから直接利用できるAzure SQL Databaseサービスは、不定期で接続先のIPアドレスが勝手に変更されてしまうため、ファイアウォール(FW)でアクセス制限をかけている多くの企業で、「突然データベースにつながらない」問題が起きています。
原因は意外と単純なので、関心があれば、こちらをご覧下さい。