最初に私の置かれた環境について説明する。立場が異なれば意見が異なるのは当然なので。
私はシステム運用の仕事をしているので、会社の端末に開発ツールの類をインストールすることは一切禁止されている。そのような状況下で何かしら作業を効率化しようと思うとVBAとVBSくらいしか選択肢がない。
Windows7ならばどんなPCにも標準で.Netのコンパイラが入っている。
。。はずだった。
試しにC:\Windows\Microsoft.NET\Framework\v3.5フォルダを覗いてみて欲しい。
csc.exeかvbc.exeがあれば、それだけで.Netプログラムが作れるのだ。
しかし、私の端末はシンクライアントである。見かけ上は普通のWindowsだが、アクセス権やら細かい設定やらが普通のWindows7と異なるようで、そこにcscは無かった。
これは完全に誤算だ。。こうして私はVBAをほぼ唯一のプログラミング環境にせざるを得なくなったのである。
さて、VBAはExcel5.0と同時に誕生したアプリケーションのためのマクロ言語である。
Excelは開発環境ではなく、完成したアプリケーションであり、VBAはそれを効率よく扱うための、エンドユーザーや運用担当者の為のプログラミング言語である。
開発畑の方が散々VBAをこき下ろすのを見かけるが、誕生の経緯からするとVBAに高度な機能を求めることにそもそもの無理があるように思える。言語そのものが悪いというよりは、開発者にVBAを使わせるのがミスマッチなのでは。
私は運用担当としてVBAの存在に大いに助けられているし、VBAでのプログラミングを楽しんでいる。もし今Microsoftに「VSTOあるからVBA終了します」って言われたらそれこそ私のプログラミング環境は閉ざされてしまう。
そうなったら大変困るので、言わせてもらう。
「VBAは断じて、クソ言語などではない。」
とまぁ、一応運用サイドの意見としてVBAを庇護しておいた。
しかし、話がAccessに移るとさすがに私もVBAをかばいきれない。
.Net登場前ならいざしらず、OOPが成熟しきった現在においていまだに貧弱なVBAで本格的な業務アプリをメンテナンスするなんて気が狂いそうになる。ご愁傷さま。
あとは、煮るなり焼くなり好きにしてくれたまへ。