ExcelやAccessでのシステムは、あまり大きな規模であることはありません。私が携わっていたのはもしかすると日本最大級、いや、世界最大級のExcelシステムだったかも・・。ちょっと大げさですが・・。


運用が始まってから「Excelである必要性はあるのか」は検討しました。色々な観点があるかと思います。必要条件、十分条件など混ぜてしまいますが

・代替技術で同等かそれ以上のことが可能で、それに対応できる技術者が確保できるか

・システムに対しての投下費用は回収できているか

・今後の要望にExcelで対応しきれるか

などです。


結果、Excelのセルへの色、文字の色も平気で使ううえ(その情報もDBに保存しています)、ソートやらフィルタ、ピボットやらまで使いますので「無理そう」とあきらめました。もしかするとJavaなどのグリッド系で同等のことができるようになっているのかもしれませんし、Visual Studio のOffice Systemでなら対応できるのかもしれません。


Excelの場合はそうですが、Accessの場合はユーザー数が増えたり、規模が大きくなったり、セキュリティ要件が厳しくなったりしたら見直した方がいいと思います。

VB、VB.netなどは、インターネット上に実用的なサンプルプログラムが結構あります。まあ、実用には手直しがいるものもありますが・・。


一方、VBAはユーザー層ややりたいことが多いせいか、適切なサンプルがあまりないように思います。


現場で「Javaの経験はあるけれどC#は初めて」「今回汎用機系からオープン系になった」など、実はアンマッチではないか?と感じる技術者のアサインは結構行われているのです。センスのある人は経験がなくてもすぐに使い物になりますが、センスのない人は何年やっていても使い物になりません。そういう世界だからかもしれません。

逆に、ある程度の規模だからC#やJavaなどで組むのかもしれません。


VBAはどうでしょうか?私が参画したVBAのプロジェクトは、最大は3名です。分業が難しいこともありますが、要件の定義からテスト、運用、保守までこなす必要があります。そう考えるとVBAの技術者って実は仕事を回せるだけのスキルがないとできないのかも?と思ってしました。

実際、私はVBAの案件でマネジメント力などは非常に伸びました。


そう考えると、もっと高単価でもいいのでは?と思えてきます。

Excel2003で「データ行の一行目を修正しようとマウスカーソルを合わせると、ソートがかかってしまう」との連絡を受け、現地に飛び試してもらったことがある。

「他のシートではこんなことないのに・・」ということで「そういうプロパティがあるのかな?」と思い「おそらくそういう設定があるのだと思いますので、持ち帰ってご連絡します」と伝え、去った。


ところが・・。


そんな設定がどこにもない。

両方ともオートフィルタを使っており、他に差はないよな、と両方のブックを開いて設定などを見ていたときに、ハタと気づいた。

「こちらはシートの保護をしていたな」

シート保護解除。で、その事象は消えた。逆に、シート保護をしていない方にシート保護をしたら同事象再現。


Excel2000ではオートフィルタはフィルタだけの機能であるが、Excel2003はソートも併せて出来るようになっている。

また、Excel2000ではオートフィルタのある行に入ったらマウスカーソルが変わるが、Excel2003ではその下のデータ行の上部になればマウスカーソルが変わりポップアップウィンドウが出てしまう。


わざわざこういう仕様変更をすることも無いだろうから、バグなのだろうか?

シート保護を解除する方向で検討中である。


※これを実験される方へ。保護のレベル、セルのロックによってはオートフィルタ自体ロックされる、という事象もあります。その際はマウスカーソルの形が変わることで確認してください。