9:07_Excel2016異常処理時の回避操作について

Excel2016でVBAマクロ処理を起動するときに異常状態に陥ったときの回避操作について、いろいろの中で認識のものを記してみる。

まず状態としてであるが、
CPUをかなり消費していて(デュアルCPUだからか50%近く)、その発熱のために冷却ファンの回転が上がってうるさくなる。
処理が進んでいるかと思うとそうでもない。
それどころかEXCELのウィンドウがまともに表示されない。
ESCキーとかでVBAに割り込みをかけようとするも全く受け付けない。

EXCEL以外の他のプログラムの処理は実行可能となっているようで(もう一方のCPUで処理はされるようだ)、そちらへの切り替えは何とか可能である。またEXCELに戻そうとすると、ウィンドウの枠が前面にうっすらと表示されるくらいで操作は出来ない。
ステータスバーに状況をメッセージ表示する処理をVBAに組み込んでいるのだが、それが表示されているようではなく初期のままのようである。


このような状態に陥ったときの対応であるが、
どうしようもなくタスクをキャンセルとかすると、それまでの変更が失われるし、さらには既存のファイルの内容にも不安が及ぶ。
だからそれを避けるようにしつつ、処理が正常に処理して正常に終了するようにしたいのである。

それから事前の対策として、この頻発する異常なものなので、それを起動する前には関連するブックの変更を確保しておきたいものについては、問題処理を起動する前に確実にブックの保存をしておくことだ。処理異常が発生してどうしようもないとき、タスクマネージャから「プロセルの終了」で強制終了させるしかないこともある。
そうしたときは当然のことながら、ブックへの変更内容は反映されずに消失してしまうことになってしまうので、それを避ける。
EXCELの異常終了時の回復機能なんてあるが、これが効果を発揮するのはもっと単純なケースでは確かに役立つこともあるものの、あまり期待できるものではないのが実態である。

※少し離しは逸れるが、このEXCELの回復機能に頼って回復したところ、データは回復するものの書式が全て失われた状態になっていて、これを保存すると当然にそのままに単純なデータのみ(言ってみればテキストデータファイルみたい)になったブックとなってしまうのである。書式は結構苦労して設定するものであり、これが失われて、また手作業でしなければならないのもその内容によってはつらいことになる。
これは事象が、「ファイルが壊れている」云々の異常時においては、この回復ファイルは保存はしない状態でデータだけでも利用しようかと、その前の開始時ファイル(まだ上書き保存していない)を別途に起動してみると、それも同じく「壊れている」と言われることがあった。これは別ブックで、ネット参照機能を持つVBA処理のものだが、そのような異常のときに元のファイルも壊れていると言われやむなく更新回復後のブックを最新として保存したりしたものであった。
しかし、このような状態になったブックでは後の面倒がとてもとても難しく、結局はあきらめとなるようなもの。このときは幸いではあるが、日々のバックアップファイルが存在していて、回復(と言ってもテキストデータだけ)したブックは名前を変えて一時保持しておき、一方バックアップから本来のブックとしてコピー回復し、それから双方を起動したうえで、あらたに変更を加えたデータを個別にバックアップから回復のブック側に手作業で移していくというものであった。

ところが、これがあとからわかったことなのだが、決して元のファイルが壊れているのではなかったのである。
「壊れている」と言われた未上書きの元のブックだが、開くとやはり「壊れている」と言われるのであるが、このときに回復から上書きせずに、いったんEXCELをきれいに終了させてから、それから元のファイルを開くと、なんと、これには問題は無いのである。
どうも、異常がおきて回復してくれたようになっている稼動環境はまた何か異常状態にあって、その状況であらたなブックを開くときが正常とは言えないようなもののようだ。
このような異常のときは回復したファイルは上書きで戻すことはせずにとりあえず別のブックとして一時的に保存して、それから異常状態に絡まったEXCELの環境は使わず、きれいに終了させて、そして次にきれいな状態で立ち上げてから落ち着いて回復作業を行うことだと認識をしたものである。


※話逸らしたままで時間を費やしてしまったので、ここらでまた中断して、続きへ
9:45