◆Excelマクロ開発「システムエラー発生」原因どう調べるか
「使用中のため、書き込みできません」ってなんで?
誰も使ってないはずなのに・・・。
みなさん、こんにちは。セルネッツ竹本です。
今回のテーマは、Excelに特徴的なシステムエラーの一つ「誰も使っていないのに、更新ボタンを押すとエラー警告が出てしまう」といった事象の原因について、解説したいと思います。
◆Excelマクロ開発でも、少人数なら排他制御ができる
まず、がっちりしたデータベース系のシステム構築とOfficeに含まれる表計算ソフトExcelアプリケーションは、構造に大きな違いがあります。
複数人が同じファイルやデータに更新をするとき、早い者順、が正しいのですが、実は、この仕組みってとても原子的なのです。
【✕】今は、誰かが使っているので、終了開放されるまで、更新NG
【◯】使っていないので、更新OK
といった仕組みなんです。問題はこれをどう管理するか。
いくつか方法はあるのですが、特定ブックが開かれた瞬間に、特定場所に用意してある「競合管理ファイル(例:競合管理.txt)」の先頭行に、使用中と書き込んでしまう。終わったらクリアする。
といった仕組みです。これ、テキストじゃなく、Excelシートでも代替できます。
が、データベースではないExcelにとって、仕組みは作れても不安定なパソコンを使用していて、予期せぬエラーや、シャットダウンなど、突然、Excelが落ちることもあります。
こんなケースでは、実際は、「使われていないが、使われていることになっている」というのが多い原因です。
◆どこに着目すれば良いか?
プログラムソースを読み解ける場合は、エラーメッセージを表示している箇所の直前で、その判定が行われているはずです。
(可読性を考えれば、きっとそう・・・)
ですので、その判定方法を解析できれば、残骸を削除するなどで、解決を図ることができます。