イントラネット上に、各支店所が直接編集できるExcelファイルを置いておいて、それを集計、作表できる、Excelツールを運用しています。
今回は、そのツールも変更するんですが、作業中は出来たら、支店所にはファイルを開いて欲しくないです。
Excelファイルって、イントラネット上にあると、アクセスできる人なら、誰でも開けます。
その性質を利用して、支店所にも書いてもらい、こちらでもファイルをメンテナンス、ってことが出来るんですが、基本、開くと排他的になるので、誰かが開いていると、こちらからは操作(正確には保存などの処理)が出来ません。
(共有モードもありますが、不安定なんで、使っていません)
そこで今回、こんなツールを使いました。
「ツリー内全てのファイルを、読み取り専用にするツール」
実は、FSO(File System Object)を使うと、ファイル属性を変更できるんですよね。
「Foles.Attributes」プロパティに、Readonly(1)を入れてあげると、ファイルは読み取り専用になります。
この時、既にこの属性が入っている場合は、「ファイルが開かれている」との判断が出来ます。
通常、ファイルを読み取り専用にはしない運用ですから、それでも読み取り専用が入っているのは、ファイルが開かれている場合しか、ないわけです。
ちなみに、ファイルが開いているかの判断は、FSOなんか使わなくても、
Openステートメントで、「For Append(追記モード)」で開いて、エラーが出るかで判断することが出来ますよ。
こうして、全ファイルを読み取り専用にするわけですが…
これだけでは、不十分です。
ファイルは読み取り専用になっても、開いて編集は出来るし、そのコピーなら保存が出来るからです。
支店所から、「ファイルが保存できなかったので、コピーを保存しておいたよ」なんて、さらっと言われると、それを後から、反映しなければならなくなります。
それを防ぐには…
「あらかじめ、アナウンスする」という手続きになります。
「こういうメンテナンスをするから、ファイルを開けないでね。
仮に開けようとしても、読み取り専用になっちゃうよ」って、あらかじめ伝えておけば、仮に無視して、コピーを保存したとしても、「保存した方が悪い」ってことになりますね。
(まぁ、反映はしますけどね)
ちなみに…
「全てのファイルの読み取り専用を解除するツール」も作りましたが、新しいファイルツリーをアップすればいいので、使いませんでしたね。
プログラミングって、パソコンに向かってるだけで、何でも出来る仕事って思われていますが、実はそんなことはありません。
実際に使うのは自分じゃなく、ユーザーなわけですから、その運用を考えると、パソコン以外の手続き、作業も、多分にあるんですよ。