Line Buffer Overflow…

書くことが多過ぎるとき、バッファーとしてこちらに書きます。不定期更新です。

マクロのツール…

イントラネット上に、各支店所が直接編集できるExcelファイルを置いておいて、それを集計、作表できる、Excelツールを運用しています。

今回は、そのツールも変更するんですが、作業中は出来たら、支店所にはファイルを開いて欲しくないです。

 

Excelファイルって、イントラネット上にあると、アクセスできる人なら、誰でも開けます。

その性質を利用して、支店所にも書いてもらい、こちらでもファイルをメンテナンス、ってことが出来るんですが、基本、開くと排他的になるので、誰かが開いていると、こちらからは操作(正確には保存などの処理)が出来ません。

(共有モードもありますが、不安定なんで、使っていません)

 

そこで今回、こんなツールを使いました。

「ツリー内全てのファイルを、読み取り専用にするツール」

 

実は、FSO(File System Object)を使うと、ファイル属性を変更できるんですよね。

「Foles.Attributes」プロパティに、Readonly(1)を入れてあげると、ファイルは読み取り専用になります。

 

この時、既にこの属性が入っている場合は、「ファイルが開かれている」との判断が出来ます。

通常、ファイルを読み取り専用にはしない運用ですから、それでも読み取り専用が入っているのは、ファイルが開かれている場合しか、ないわけです。

 

ちなみに、ファイルが開いているかの判断は、FSOなんか使わなくても、

Openステートメントで、「For Append(追記モード)」で開いて、エラーが出るかで判断することが出来ますよ。

 

こうして、全ファイルを読み取り専用にするわけですが…

これだけでは、不十分です。

 

ファイルは読み取り専用になっても、開いて編集は出来るし、そのコピーなら保存が出来るからです。

支店所から、「ファイルが保存できなかったので、コピーを保存しておいたよ」なんて、さらっと言われると、それを後から、反映しなければならなくなります。

 

それを防ぐには…

「あらかじめ、アナウンスする」という手続きになります。

 

「こういうメンテナンスをするから、ファイルを開けないでね。

 仮に開けようとしても、読み取り専用になっちゃうよ」って、あらかじめ伝えておけば、仮に無視して、コピーを保存したとしても、「保存した方が悪い」ってことになりますね。

(まぁ、反映はしますけどね)

 

ちなみに…

「全てのファイルの読み取り専用を解除するツール」も作りましたが、新しいファイルツリーをアップすればいいので、使いませんでしたね。

 

プログラミングって、パソコンに向かってるだけで、何でも出来る仕事って思われていますが、実はそんなことはありません。

実際に使うのは自分じゃなく、ユーザーなわけですから、その運用を考えると、パソコン以外の手続き、作業も、多分にあるんですよ。