DRYにExcelを活用するためのVBAの基礎知識

この記事を読むのに必要な時間:およそ 3 分

はじめに

WEB+DB PRESS Vol.49の特集1『~システム開発を成功させる「繰り返しの排除」原則~現場で役立つ DRYの基礎知識」第4章で,「実践DRY! Excelによる知識の集約」と題してVBAを使ったExcelの活用について解説しています。本稿では,そこで掲載した内容をさらに活用していただくため,Excel活用のためのVBAの基礎知識について解説します。

操作方法や画面キャプチャなどはExcel 2007を利用しますが,勘とイルカを活用すれば,Excel 2003などでも同様なことができますので,ご自身のオフィス環境に合わせて適宜読み換えてください。

簡単でDRYなVBA入門

WEB+DB PRESS Vol.49のDRY特集では,VBAを使ってExcel仕様書を操作すればDRY原則が守れる,という趣旨の解説をしました。それは,本誌の読者の大半は,「Excel……ケッ」という感じでの付き合いしかしていないのではないか,当然,JavaとPOIで操作はしても,VBAで操作できたりそれなりのIDEが組み込まれていたりすることは知っていても触ったこともないのではないか,という想定があったからです。そうした方にもVBAによるExcel操作について理解していただくため,ここではExcelのマクロ言語であるVBAとはどういうプログラミング言語かを説明します。

VBAとは何か

まず,用語の整理ですが,Microsoftのプロダクトで,現在,普通に利用できるVBには次の4種類があります。

VBScript

Internet Explorerの制御,ASP(ASP.NETではなく)の制御に利用できるスクリプト言語で,ActiveScript仕様に基づいたCOMのコンポーネントです。VBScriptは,ビジネスシーンで,IEの制御用として良く利用されています。そのため当面フェードアウトはしないとは思いますが,レガシーです。

言語仕様としては,次のVisual Basic 6.0(VB6)のサブセットです。

VB6

一応,まだ現役のコンパイラ言語です。言語仕様としては,ほぼ後述するVBAと同等です。ただし,完全にレガシーな存在です。しかし,単にVBと言った場合,VB6を指すことがあるくらい,完成度と普及度を誇ります。

VB7以降(VB.NET)

現在,本来であれば「VB」という言葉が示すプログラミング言語ですが,いまだに単にVBと言うとVB6の意味になるところが問題です。

いずれにしてもVB7以降のVBは,CLR(.NET Framework)上で動くIL(Intermediate Language;中間言語)を出力するコンパイラ言語です。しかも調べるとわかりますが,よくできたプログラミング言語です。ただし,次々と新しい機能を取り入れて変化を続けるC#の陰に隠れて,実際の利用状況などはよくわかりません。筆者の勤め先でも,C#は利用していますが,VBを使った開発というのは(VB6のメンテナンスは別として)見かけません。もっとも,話で聞く分には,.NETへ移行した企業の大半はVBを使っているらしいです。

VBA(Visual Basic for Applications)

MS Officeに統合されているマクロ言語です。言語仕様としてはVB6に相当します。EUC(エンドユーザコンピューティング)に広く深く使われているという話は聞きますが,意外なほどエンジニアは無視することが多いようです。実際,筆者も5年前くらいまでは,Rubyで操作することはあってもVBAを使うという発想は持っていませんでした。しかし,この記事を書きたくなるくらい,現在ではまずVBAでできないかを考えるように宗旨替えをしました。

ExcelをCOMサーバとして利用できるのは,これらすべてのVBですが,Excelが組み込み言語として利用できるのはVBAだけです。しかも,VBAであれば,オフィス文書に統合できるため,配布の問題を考えなくても済みます。しかし,セキュリティ制約には抵触するかもしれません。

コラム DRY原則と知識の獲得

ここまで読んで,「いや待て」と思った方も,おられるのではないでしょうか。

私はJavaのエキスパートで,最近Rubyも使えるようになった。何が悲しくてVBを学習しなければならないんだ? というようなことです。Java,Ruby,VBといったALGOL系のプログラミング言語は,基本的な制御構造などは,どれもほとんど同じですので,学習といっても大したことはないということは別にしても,あまり,自分の使う技術については枠は作らないほうがよいと思います。

DRY原則を,「知識集約」という言葉だけで理解すると,1つのプログラミング言語に専念したほうが原則的に正しく感じるかもしれません。しかし,それは勘違いというものです。知識を集約すべきは,あくまでも「システム内」です。エンジニアの脳内は別の話です。

書籍『達人プログラマー』では最初の章(まだDRY原則について言及する前です)で,「知識ポートフォリオという観点からプログラマーが持っている,コンピュータ,仕事をしているアプリケーション領域,すべての経験について考えていくことにしましょう」と書いています。ポートフォリオという言葉が示すように,技術習得は,投資なのです。

その観点から,まだ当分Excelを利用する可能性があるのなら(たぶん,あると考えたほうがよいでしょう),Excelに投資するのはまったく正しいことです。ただし,成長株というわけではないので,メニューのあらゆる項目から,すべての設定方法まで,イルカのように知り尽くすまで投資するのは,控えたほうがよいとは思います。

著者プロフィール

arton

artonは,垂直統合型システムベンダーに勤務するソフトウェアエンジニアです。最近,名刺の肩書が「コンサルタント」になって、ちょっと混乱しています。困ったものです。Officeで好きなツールはPowerPoint,嫌いなツールは校正ありに設定したOffice:macのWord,2007では大好きなカイル君の不在が嘆きの種ですが,リボンのおかげでExcelがそれなりに使えるようになったのでまあいいかな,というところです。

バックナンバー

プログラミング

コメント

コメントの記入