Excelマクロ開発「更新競合エラー発生」原因は?

◆Excelマクロ開発「システムエラー発生」原因どう調べるか

「使用中のため、書き込みできません」ってなんで?

誰も使ってないはずなのに・・・。


みなさん、こんにちは。セルネッツ竹本です。

今回のテーマは、Excelに特徴的なシステムエラーの一つ「誰も使っていないのに、更新ボタンを押すとエラー警告が出てしまう」といった事象の原因について、解説したいと思います。

◆Excelマクロ開発でも、少人数なら排他制御ができる

まず、がっちりしたデータベース系のシステム構築とOfficeに含まれる表計算ソフトExcelアプリケーションは、構造に大きな違いがあります。

複数人が同じファイルやデータに更新をするとき、早い者順、が正しいのですが、実は、この仕組みってとても原子的なのです。

【✕】今は、誰かが使っているので、終了開放されるまで、更新NG

【◯】使っていないので、更新OK


といった仕組みなんです。問題はこれをどう管理するか。


いくつか方法はあるのですが、特定ブックが開かれた瞬間に、特定場所に用意してある「競合管理ファイル(例:競合管理.txt)」の先頭行に、使用中と書き込んでしまう。終わったらクリアする。


といった仕組みです。これ、テキストじゃなく、Excelシートでも代替できます。


が、データベースではないExcelにとって、仕組みは作れても不安定なパソコンを使用していて、予期せぬエラーや、シャットダウンなど、突然、Excelが落ちることもあります。


こんなケースでは、実際は、「使われていないが、使われていることになっている」というのが多い原因です。

◆どこに着目すれば良いか?

プログラムソースを読み解ける場合は、エラーメッセージを表示している箇所の直前で、その判定が行われているはずです。

(可読性を考えれば、きっとそう・・・)

ですので、その判定方法を解析できれば、残骸を削除するなどで、解決を図ることができます。


全国対応!お気軽にお問い合わせください