Accessで作られたシステムの利用者は何人ですか?当初は1人だったが、今は3名で同時利用、ということもあるでしょう。


1人で作ってその人が使う分には、この話は聞かなくていいです。




そうでなければ、極力データとロジックを分離しましょう。




要するに、Accessのデータベース部分と、その他の部分(form、モジュールなど一切合財)を別のMDBファイルとします。




ユーザーが別で開発している人の場合、修正してリリースする際にはデータの移行が必要だったり、直接修正させて貰うにもその間使えない、という問題があったかと存じます。


上記のように分離するだけで「処理を修正し、リリース」ということが可能になります。もちろんテストはしますよね?




今まで保守を受け継いたAccessプログラムを見て思うことは松田優作ではないが「なんじゃこりゃー」と感じることがとても多い。



しかしそんなプログラムでも、作った本人は非常に得意げであり、Accessなら俺に聞け!といった風であったりした。



構造化プログラミング以前は「スパゲティーコード」と揶揄されるほどぐちゃぐちゃで何をしているのか分かりにくいことがあった。構造化、オブジェクト指向と、コードは整然と書けるようになってきている。そういう現在、スパゲティーコードの代表といえばAccessで組まれたシステムであろう。



この原因は、おそらく市販されているAccess関連の書籍にも問題があると思う。「こんなことができる」という即効的な小手先のテクニックの紹介、つまりミクロ視点で書かれている書籍が多いためであろう。そういう書籍も必要ではあるが、ちょっと多すぎるように思う。個人でちょいと使う分にはいいのかもしれないが、業務で使うには問題であろう。



「私の作ったAccessのシステムは非常に可読性が高く、保守もしやすく、かつ安全です」と胸を張れる技術者がどれほどいるだろうか?おそらく「もう少しなんとかしたいな」と感じつつもできずにいる方の方が多いのではないだろうか。



僭越ながら、ここでは幾つかの方針を示すことで、従来よりは随分可読性、保守性が高くなるような方法を数回にわたって書いてみることにする。どれもこれも「画期的な新しいアイデア」ではない。それゆえ誰にでもできるものと思う。



今まで指導(コーチングに近いかな)してきたところでは十分に効果があった。全機能を使っている訳ではないのでこちらで想定外もあるだろうけれど、必要に応じて加えていければ、と思う。

単票形式のリストがシートの縦にずらりと並んでいるのだが、ページ区切りが付いていないシートに、VBAでページ区切りを追加する処理を作成しました。






ついでに、選択したセルのページの単票を印刷する処理を作ろうとした時、「あれ、現在のページってどうやって取るんだっけ?」ということで調べていたところ、どうやらExcel4のマクロにはあったらしい(怪しいけれど)。










そこで、調べたものの・・「Excel4のマクロの資料は入手困難である」ようなのだ。私自身、Ver5.0からしか使っていないので蔵書にもない。






ワークシート関数が高速であるように、Excel4のマクロも高速との話である。しばらく図書館や古本屋を探してみることにするか、とも考えています。










なお、VBAのどこぞのプロパティを参照すれば簡単に現在のページが取れるのかもしれませんが分かりませんでした。ちょっと面倒(コードにすれば長くはないのですがね)でしたが現在のページを特定する部分も含めてVBAで作成しました。