Excelで VBAマクロをいじってるうちに不調になる話

2008/06/05

Categories: excel

excelでVBAマクロを編集→保存しつつ実行ということを繰り返していると、突然エクセル(というかブック)が不調になってしまうことがある。
※個人的には「xlsブックが腐った」と呼んでいる。


ツールをお客様の前でデモってるときに、エクセルごと落ちてしまい、「自分の環境では動くんだけど」を地で行く展開に・・・。
頭が痛い。

こんなときのgoogle先生頼み。
が、excelが落ちる話はよく出てくるけど、同じコードで実行できたりできなかったり、という話は見つけられなかった。

再現コードは追及できていない。
状況・事情は以下のとおり。

結局原因はまったくわかっていない。

調査の過程で、
ということに気付いた。

全く根拠のない想像だけど、何かしらの内部状態・中間状態(parseとか?)をブックの中に保存しているんだろう、そしてこの部分に火種が潜んでるんだろう、と考えた。

だったら、保存できなくしてしまえ、ということで、xlaファイルを「読み取り専用」にしたら、ハッシュ値の変化はなくなった。当然ながら。

現在のところマクロ死亡は再現していない。
これならいける、かも???



元々、リリース候補の作成を、nantを使って1手順化していたのが幸いだ。
  1. マクロ編集
  2. 実行・確認(NGなら1に戻る)
  3. リリース候補作成
  4. テスト
という流れ。
nantスクリプトでattrib要素を用い、xlaファイルを読み取り専用にする。
4でエクセルが落ちる現象が出た場合は、1に戻って保存で再挑戦。内部状態がまとも?になるまで繰り返す(うへ)。

読み取り専用でも上書きは可能なので、マクロの差し替えもなんとかなる、と。

  >> Home