Excel 2000 VBAから始まり,Excel 2002 VBA,Excel 2003 VBAと改訂を重ねているExcel VBA学習書の決定版,『かんたんプログラミング Excel VBA』シリーズの著者,大村あつし氏に,Excel VBAの変遷と学習の意義について寄稿していただきました。
VBAとの出会い
どんな開発言語でも,普及に5年,定着に10年かかると言われます。実際,「1~2年で定着する」と一部の開発者の間でささやかれたJAVAも,ほぼ同様の年数を必要としました。
では,VBAの場合はどうなのか。簡単に歴史を紐解いてみましょう。
VBAが日本に上陸したのは1994年です。Excel 5.0のマクロ言語として,Excel 5.0とともに日本にやってきました。
このとき,ごく一部の人は,Excel 5.0に表計算ソフトとしてではない,別の可能性を見いだし始めていました。それが,VBAです。彼らは,Excel 5.0が,Visual Basicのような開発のためのプラットフォームであることを見抜いていたわけです。
ちなみに,私とVBAの出会いは,ある会社から,遊んでしまっているマッキントッシュがもったいないから,マッキントッシュでプログラムを開発してくれないか,と頼まれたことです。当時の私の使用言語は,COBOL,Visual Basic,Access Basicでしたから,正直,お手上げだと思いました。
しかし,調査を重ねた結果,「Excel 5.0 VBAはVisual Basicよりも凄い」ことに気付きました。
そして,その凄い「Excel 5.0 VBA」は,Windows 95の発売と同時に,Office 95の一ファミリーとして,Excel 95 VBAに進化を遂げます。
VBAの進化
さて,「Excel 5.0 VBAはVisual Basicよりも凄い」と申し上げましたが,これは,Excel 5.0 VBAとVisual Basic 2.0を比較した場合の話で,その後Visual Basicは進化を遂げ,弱かったデータベース接続周りが強化され,今ではJAVAに対抗すべくインターネット・プログラミング言語に進化を遂げています。
しかし,当然のことですが,ExcelのVBAもこれまでにさまざまな進化を遂げてきています。Excel 97 VBAからはVisual Basic EditorというVBAの開発のための支援ツールが搭載され,また,ActiveXコントロールにも対応しました。
ActiveXコントロールとは,ユーザーフォーム上に配置するラベル,テキストボックス,コマンドボタンのような部品のことです。また,イベントプロシージャも充実しました。通常,マクロは,図形オブジェクトやメニュー,ショートカットキーなどに登録して実行しますが,ブックが開かれたとき,シートがアクティブになったとき,セルの値が変更されたとき,など,さまざまなイベントを検知して,自動的に実行されるマクロのことをイベントプロシージャと呼びます。
そもそも,WindowsというOS自体が,ユーザーの動きを監視していて,マウスがクリックされた,とか,ウィンドウのサイズが変更された,というイベントに反応するOSですから,当然,開発言語も,イベントに反応してしかるべき処理を実行するようなものが多いわけです。Visual Basicも当然そうです。
こうした開発言語をイベントドリブンと呼びますが,Excel 97 VBAになって,VBAもイベントドリブンの仲間入りをしたのです。
VBAの完成
こうして,少しずつ,また,あるときには急激な進化を遂げてきたVBAが完成を見たのは,Excel 97 VBAの登場からさらに2年後,1999年にリリースされた,Excel 2000 VBAが世に出たときです。冒頭で申し上げた,「開発言語は浸透するのに5年」と図らずしも一致します。また,その頃ビル・ゲイツは,『日経バイト』誌のインタビューで,「今後は私達はビジネスの現場においてVBAを通じてあらゆるソリューションを提供していくことになる」と発言しています。
このExcel 2000 VBAは,Visual Basic 6.0と同じランタイムエンジンで動くため,VBAにも,Excelとは別にVisual Basicと同じVBA 6.0というバージョンが与えられました。
また,それまでVisual BasicやVBAの弱点だった,文字列や配列を操作する関数も大幅に強化されて,VBAはついに完成を見たわけです。
その後は,Excel 2002でVBA 6.3,Excel 2003ではVBA 6.4とマイナーなバージョンアップをしながらより堅牢なプログラミング言語に進化し,現在を迎えています。
ちなみに,VBA書籍の多くがExcel 2000/2002/2003対応と謳われているのは,すべて,VBAのバージョンが6.xで互換性があるためです。
エンドユーザープログラミングの時代へ
しかし,みなさま,こうした進化の停止を,「MicrosoftはVBAを見捨てた」と勘違いなさらないでください。すでに高級言語として完成しているVBAに,余計な機能を持たせないようにしただけのことです。VBAがなくなると考えるのは,あまりに早計です。VBAユーザーには,ルーチンワークを自動化する,いわゆるキーボードマクロのような使い方をする人から,VBAだけで数千万円もするアプリケーションを開発してしまう人まで,実にさまざまです。
これからは,簡単なソフトウェアなら,わざわざ外注に頼まなくてもエンドユーザーが自ら開発してしまう時代,すなわちエンドユーザープログラミングの時代になると私は予測しています。そして,そのときエンドユーザーが選ぶ言語は……,言うまでもありません。マクロ記録機能を備えた,もっとも習得しやすいExcel VBAであることに疑いの余地はありません。
何はともあれ,とにかく,マクロ記録を実際に経験してみてください。テープレコーダーが声を録音するように,あなたの操作をすべて代理記述してくれるマクロ記録に驚愕することと思います。
そうして,マクロに慣れたら,『かんたんプログラミング Excel 2003 VBA』シリーズのような本で,マクロ記録では記述できないテクニックを習得していってください。
これが,現在考え得る,もっとも確実かつ短時間でVBAをマスターできる道であると私は信じています。