<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000--VBAの小屋>VBAってなんや?



VisualBasicっていうのはご存知でしょうか。
Microsoftが開発したWindows上で動くBasicです。
言語そのもののことですが、すなわち製品名ですね。いまや多方面で働く開発ツールの定番になっています。

Basicというのは、Beginner’s All-purpose Symbolic Instruction Codeの略。
1960年ごろに米国で考案された、プログラム開発者を目指す者のための教育用のFORTRANです。
FORTRANというのは、それより前に、それこそまだパソコンなんて言葉すらなくて、コンピュータというものがまだでっかい計算機みたいな間隔で0と1の組み合わせでプログラミングしていたような時代、もっと効率よくコンピュータのプログラミングをしようということで生み出された言語ですね。

コンピュータというのは、ただキーボードからかたかた入力したところでなにも反応しません。
どうすればどうなるのか、何をしたらどうなるのか・・・という、コンピュータの行動パターンをたくさん作って、あらかじめ与えておいてやらなければなりません。
その行動パターンのことをソフトウェアと呼んでいます。
コンピュータは電源が入るとソフトウェアを主記憶と呼ばれるところにたくさんたくさん読み込んで、いろいろな命令に応じることができるようになります。50年位前のコンピュータは、ほんの少しの命令をこなすだけなのにものすごく身体が大きくて、何十畳もの部屋を占有するようなガ体のでかさで、おまけにそいつに「あーなったらこうしなさい」といったソフトウェアを用意するのも大変だったわけです。
そこで、少しずつ少しずつ、コンピュータの性能が上がって小型化が進むのと平行して、簡単に命令が作れるような、そんな環境も整ってきたわけです。それが、いわゆる「コンピュータ言語」ってやつですね。

書き方を勉強すれば、コンピュータの行動パターンを作ることができるわけです。
その魁がFORTRANであり、COBOLであり、またそこからどんどん進化して、高度な命令を記述することができるようになり、BasicやCといった言語が誕生してきました。JAVAとかHTMLなんていうのも、一種のコンピュータ言語なのかもしれません。

でも、いくら初心者にやさしいコンピュータ言語、っていったって、コンピュータ言語はコンピュータ言語です。
書き方覚えないと何もできない。売掛金一覧表を出したいんだけど・・・と思っても、コンピュータにどういう命令文をどうやって書けば出てくるのか、コレじゃまるで雲をつかむようなお話です。

そこで・・・。コンピュータ言語を扱える人たちに作ってもらったソフトウェアをお店で買ってきて使うような時代が、20年位前からはじまりました。ワープロソフトなり、表計算ソフトなり、在庫管理ソフトなり・・・いろいろ売ってますよね。最近はパソコン買うと頼んでもいないのにソフトがいっぱいついてきたりして、自分で目的を持ってソフトを買う、っていうより、なんかついてきたからこれ使ってみようかな、って感じの切り口も多いのかもしれません。
MS-Excelっていうのを手に入れて、パソコンの中で動くようにして、んで、これの使い方を覚えれば、コンピュータ言語なんてまったくわからなくてもいろんな仕事をこなすことができるわけです。

すごく時代が進んできて、コンピュータ言語を使わなくても高度な仕事をこなすことができるソフトウェアがいっぱい出てきたわけです。ExcelとかAccessもその類ですよね。

確かに優秀で便利なソフトウェアはいっぱいあります。でも、わたしたちの仕事にピッタリあったソフトウェアってわけじゃないですよね。逆に、わたしたちがExcelやAccessの機能を理解して、うまく業務に当てはめていく必要があります。うまく当てはまって簡単に作れるときもあるし、もうちょっとなんとかならんかなーというときもあります。


MS-Excelの場合のVBAというのはほとんどの場合、「処理を自動化させたい」という目的のために使います。
つまり、ふつう、シートを開いて、セルA1からF25まで選択して、並べ替えて・・・という感じでマウスで画面の中かちかちクリックしながらやってた作業を、めんどくさーということでどっかコマンドボタンクリックしたらパパパパッと自動的にやってくれないものかしら、というリクエストにお答えするものだと思ってください。Excelの中で「マクロ」と呼んでいるものが、VBAで作られた命令文の集まりなのです。
ExcelのVBAというのは、Excelのブックやシートやセルや列や行を操作するために改造されたVisualBasicということになります。

MS-WordでもVBAは扱えるんですよ。これもイメージはExcelと同じですね。「マクロ」という形で、よくやる操作手順をあらかじめ登録しておいて、自動実行させるっていう目的で作ります。それが結果的にVBAという形で保存されるんですけど、要するにMS-Wordの文書を扱うためのVisualBasicなんですね。

じゃMS-Accessの場合はどうなんでしょう???
と、いうのが、このコーナーのテーマです(長げぇ)

VBAとひとくちにいっても、処理の内容によって心得ておかなければならないことがいろいろあります。
いろんな分類の仕方があると思いますが・・・とくにそういうわけ方や呼び方はないんですけど、わたしは大きくふたつに分類して考えてます。

・MS-Accessの中のテーブルやレコードなどの中のデータを扱う処理のためにVBA
・テーブルやレコードなどを特に扱わないVBA

超大雑把ですが・・・。
前者の処理は、基本的にクエリとマクロの組み合わせでできるものが多いですね。通常はアクションクエリなどをうまく工夫したほうが開発コストも手間も労力もグッドだと思います。
でも・・・たまに、どうしてもクエリではまかなえない処理も出てきます。クエリの能力が劣っているというわけではないんですが・・・クエリは、きちんと正規化されたRDBのルールにのっとった設計のなされたテーブルでないと、思ったように結果を出すことができなかったりします。少々無茶をして結果を出したい場合など、自分でテーブルの中からデータを取ってきてくっつけたり並べ替えたりして新しいテーブルをこしらえる処理を作らないとダメってときもあります。

そういうとき、VBAを使って自分で処理をこつこつ作るのです。
これにはVBAの一般的な書き方の他に、VBAの世界で、MS-Accessのテーブルやクエリやレコードがどういう扱いをされているのか詳しく知らないとなりません。
MS-Accessのバージョンがあがるとテーブルやクエリに対する見方考え方がころっと変わったりするんで、VBAの技術、というよりも、そういう心積もりがないといけないかな,という感じです。
クエリとかマクロで作った処理なら、AccessのバージョンがあがってもちゃんとAccessの中で互換性保ってくれますけど、自分で作った処理じゃ、Accessに面倒見てもらうわけに行かないですからね。ヘルプとか、バージョンアップ情報とか見ながら、新しい書き方考え方のところを修正していったりとか、いろいろこまごま作業が発生することもあります。なおさなくても使えちゃうような場合も多いですけどね。

後者のほうは、だいたいが「マクロのかわり」みたいな感じで、たとえばコマンドボタンをクリックしたらレポートを印刷するとか、他のフォームを開くとか閉じるとか、そういう処理をチョコっと自動化するときなどに使ったりします。
こちらはまず「マクロってどういうものなのか」をいろいろ知っておく必要がありますね。後は、まあ、たいがい、フォームから実行することが多いので、フォームの「イベントプロパティ」っていうものがどういうものなのか、いろいろ見ておけば、そんなに抵抗なく扱っていけちゃいます。

マクロをある程度使ったことのある方と、マクロとかイベントとか言われてもぜんぜんわかんないという方では、おそらく同じようにお話してても納得度が違ってくると思うんですよ。一応わたしは・・・マクロとフォームの作成手順と役割を理解しているみなさんを対象にお話していく、っていうつもりで進めていきます。でも例によって少々くどい説明が続くとは思いますが(笑)

わたしはいろんなことを織り交ぜながらゆっくりお話をしていきますが、みなさんはぜひとも、こんな感じで視点を変えていってください。

1)フォームのイベントの概念、フォームのイベントってどういうの?
2)VisualBasic Editorの基本的な使い方、書き始め方
3)いくつか作ってみて練習する(発案から作成、テストまでの段取りを覚える。内容そのものを覚えるのではない)
4)「関数」をいくつか知っておく
5)ヘルプに慣れる

この辺を繰り返しているうちに、「こんな処理を作りたいなぁ」から「できたー!」までの間の時間と労力を少しずつ縮めることができるようになりますよ。がんばりましょう。