■ さらにゲームを作るなんてとんでもないぞ!
エクセルでシステムを開発する。とういうと眉間にしわを寄せる人がいます。それもそのはず、エクセルは単なる表計算ソフトであって開発ツールではない。というのが世間一般の認識です。
でも、その人たちはエクセルのVBA機能をあまり詳しく知りません。マクロとVBAの違いもよくわかっていません。
マクロ機能とはあるアプリケーションに一連の自動実行させる機能を追加するためにユーザーが任意にデザインできる自動実行機能です。
Excelの場合、ツール>マクロ>マクロの記録によって記録される内容が、あなたが自動実行させたいマクロの部分になります。この内容は後から何度でも任意に呼び出せ、何回でも決められた定型処理をエクセルに実行させることができます。
VBAは言語の名前です。正しくはVisualBasic for Applicationsの略で、あのVisualBasic(ver6.0まで)と同じ文法を持つ由緒正しきプログラミング開発言語です。(以下VB=VisualBasic6.0)
しかもVBにできてVBAにできない機能はほとんどなく、工夫次第ではVBと全く遜色のない機能を提供できます。
たとえば、以下のプログラムはExcelゲームクリエイターの第一人者、「谷孝一氏」が作成したExcelで動作するシューティングゲーム「Super Excelon」です。
谷孝一氏公式サイト「猫とエクセル」
これほどのゲームがExcelVBAで開発できるのです。 業務システムが開発できないと本気で思いますか?
実際、ExcelVBAはVBで可能なほとんどの処理を行うことができます。
詳しくはこの後の、「エクセルでVBA編」で述べますが、基幹システムを丸ごとExcelで開発することだって可能です。
ただし、そのためにはやはり守らなければならないルールと手法が存在します。
「データベースはできるだけ外に持つ」
一番最初に一番肝心なことを言いますと、エクセルの中に巨大なデータベースを持つことはあまりお勧めできません。
エクセルのワークシートは基本的に表であって、簡易データベース的な使い方はできますが膨大なデータを扱う場合はRDBMSという専門のリレーショナルデータベース管理システムを別に用意したほうが無難です。
どうしてもワークシートにデータベースを持つ必要がある場合は、実行系のブックとデータベースのブックを分けて構成することではるかに安全性が高めることができます。
それでもやはり、RDBMSのもつあの排他制御とトランザクション管理、ログファイルからのデータ復帰などは魅力的です。条件さえ許せば、RDBMSを使ったシステム構築をぜひ検討してみてください。
ところでExcelからでもVBと全く同じように、さまざまなデータベースに接続できます。
SQL文を使用してレコードセットも取得できます。データベースの操作系文法はまったく同じです。
ちなみにRDBMSってどんなものがあるのでしょう?
有名なところではオラクル社の「Oracle」マイクロソフト社の「MicrosoftSQL Server」、お手軽なものなら「OfficeAccess」のMDBファイルでも簡易データベースになります。
またデータベース領域が4GBという制限があるものの、SQL Server2005 ExpressEditionという無償のRDBMSがMicrosoft社より提供されています。
http://www.microsoft.com/japan/sql/editions/express/default.mspx
・なぜエクセルでシステム開発することに拒否反応があるのか?
ExcelVBAの最大の長所はなんといっても無料(ただ)で提供される開発環境にあります。
Excelはただじゃないぞ!
おっしゃるとおりですが、Excelを開発目的に購入される方はほとんどいないでしょうから、付属される開発環境についてはやはりただ同然です。
そしてExcelVBAの魅力の一つに、強力なマクロの自動記述機能があります。
ユーザーが行うほとんどのExcel上の操作をVBAにして自動記述します。これほど強力な自動記述機能をもったマクロを私は他に見たことがありません。
そしてコンパイル不要なコードのステップ実行。(正確には実行時にP言語という中間言語にコンパイルされているのですが、)
実行中にいつでも中断させてステップ実行させコードの検証を行うことができます。
実はこれらの便利機能は全て諸刃の剣になります。
無料で提供される開発環境はエンドユーザーの開発への参入を容易にします。逆に言うとExcel VBA開発者には大量の初級者が混ざることになります。
マクロの自動記述も便利ですが、これを組み合わせてエラー処理の一つもないものをシステムと称して各部署に配布した場合など、どのような結果になるか火を見るより明らかです。
コードのステップ実行は確かに便利ですが、VBAの実行をいつでも止められるというのは危険です。大量のバッチ処理の最中にエンドユーザーの誤操作によって処理が中断してしまう。まさに目を覆いたくなる状況です。
どうもExcelで開発するシステムに拒否反応を抱く人たちの中にはこの手の経験を過去に体験した人が多いように見受けられます。
冗談じゃありません。
悪いのはExcelではないのです。中途半端なExcelシステムを作って配布した人たちが悪いのです。
繰り返しになりますが、Excelはなにも問題はありません。同じようなシステムはVBで作ろうがJAVAで作ろうが必ず問題を引き起こします。
ましてや自分の不勉強を棚に上げ、「これはExcel特有のバグだから…」などと言い訳しようものなら…これはもう切腹ものです。
きちんとした作法に則って開発をすればいいのです。ただそれだけのことなのです。
我流でプログラミングしていても、あまりテクニックの上達は見込めません。これはどの開発言語でも同じことがいえるでしょう。
必ず基礎を学んでください。あなたのExcelプログラミングは見違えるほどに上達します。
|
|
|