<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>基本をマスターしよう
 DBTable1Table2Fom1Form2Form3Query1Query2Query3Query4Query5Query6Report1Report2Report3Macro



■Macro : マクロを作ってみる

これはなかなか「作ってみよう」と陽気に言い出せないむずかしいオブジェクトなんですよ・・・。
なんていうか、必然性がないというか・・・。いらなきゃいらないですからね。

うーん、じゃ、とりあえず、「メニュー画面」でも作ってみて、そこから展開してみましょうか。
いろいろやってみますので、あまり固定観念を持たず、気楽に取り組んでみてください。


さてまず、フォームをひとつ作ります。
え、なんでマクロの勉強なのにフォームを作るのかって??
・・・そうそう思惑通りにいかないんですよ・・・いいから、はやくはやく。

無地のフォームをひとつ作り、なんか適当にタイトル付けてください。デザインはお任せします。
で、コマンドボタンをひとつ、適当なところに作ります。
ツールボックスの中にコマンドボタンを作るためのボタンがありますんで、こいつをクリックしてからフォーム内のどっかをクリックしてください。

コマンドxxという名前のボタンがいっこできます。

で、ボタンの標題を書き換えちゃいましょう。
ボタンの表面をうまーくクリックすればカーソルが現れますんで、コマンドXXなんて色気のない標題は消しちゃって、もうちょっとわかりやすい文句に書き換えてください。

ボタンの大きさや標題の文字の色は変更することができるんですが、ボタンそのものの色は変えることができません。
ちょっと残念ですけど、ねずみ色のままでいきましょう。

他にも、[入力画面を開く]とか[一覧を印刷する]とかいうボタンを作って、うまく並べておきましょう。
なんかメニューっぽくないですか?

で、デザインビューのまま何千回クリックしても何も起こらないんで、フォームビューに切り替えます。

あ、でも、この状態ではまだ何にも起こらないです。
このボタンをクリックしたら何をすればいいのか、その後の作業を「マクロ」にします。

じゃ、とりあえずこのフォームは[メニュー]とでも名前を付けて保存してください。


さて、次にいよいよマクロ作りです。

マクロを新規に作成しましょう。え、どうやるかって?・・・。だめですよっ。そんなこと言っちゃ。

マクロにはウィザードもへったくれもないんで、いきなり唐突にウィンドウが出てきます。
これがマクロを作るためのウィンドウです。なんかシンプルですねぇ。

このウィンドウの中に、「コマンドボタンをクリックしたらさせたい仕事の一覧」を作っておくんですね。

このウィンドウの中に、処理をひとつだけ書くこともできますし、いくつかの処理をまとめて書くこともできます。
え?なにを言ってるのかさっぱりわからない?・・・そうですよね。すみません。

とりあえずやってみましょう。
さっきのメニューのフォームで作ったコマンドボタン、あれをクリックしたときに動く処理を、このウィンドウの中に作ろうと思うんです。
ボタンは「おしまい」のボタンも含めて、わたしは4つ作ったので、全部で4つの処理が必要になります。
このウィンドウにひとつ作って、入力画面を出すボタンの処理は別のマクロウィンドウを新規に作ってそこに書いて・・・と、いう感じでもいいんですけどね。
でも、せっかくひとつのウィンドウの中にいくつも処理を書ける仕組みになってるんで、メニューのフォームで使うマクロを、全部ここにまとめて作っちゃおうと思うんです。

とにかくそういうことで、やってみますね。

画面の上の方のツールバーを見てください。「マクロ名」というツールボタンがあると思います。これをクリックしてください。

これをクリックすると、ちょっとマクロのウィンドウの中が変ったと思いません??
「マクロ名」っていう欄が出てきたと思います。

と、まず、マクロ名のところに、なんか適当に・・・そうですね、「検索画面」とでも入力しましょう。
で、その「検索画面」というマクロの中でやる処理を、次に順々に選んでいきます。
「アクション」という欄をクリックすると、一覧からいろいろな処理を選ぶことができる仕組みになってますので、中からまず「フォームを開く」という処理を選んでください。

フォームを開く、というアクションを選ぶと、下の「アクションの引数」という欄に「何という名前のフォームを開くのか」フォームの名前などもろもろ指定する欄が出てきますよね。
既に作成済みのフォームは一覧参照できるので、[照会フォーム]を選んでください。そうそう。一番最初に作ったハデなフォームです。

2番目のアクションは「閉じる」を選びましょう。で、引数は下のように、[メニュー]というフォームを閉じます。さっき作ったメニュー画面ですね。

同じ要領で、次々マクロを作っていきます。ちょうど下のように・・・。
フォームの名前をあたしと違う名前にしてる方は、しっかりご自分で作ったフォーム名を一覧から選んでくださいね。

コメント欄は、このマクロの働きとか意味とかをちょこっと書き残しておきたいときに、メモ変わりに使います。
特に入力しなくてもよい欄ですので、真っ白のままでもよいですよ。

3番目のマクロとして、レポートを開きます。
いきなり印刷せず、とりあえず画面で確認しようと思いますんで、印刷プレビューにしてください。

最後に、「おしまい」というボタンをクリックしたら、メッセージを出して、Accessを終了しようと思います。

できました?え?何をやってるかぜんぜんわからない?
とりあえず最後まで作ってから、もう一回考えましょうよ。ね。

このマクロのウィンドウを閉じようとすると、マクロに名前を付けて保存するかどうかメッセージが出ます。
これは、他のオブジェクト作ってるときと同じ。そうですねぇ。[メニュー用]とでも付けて、保存しましょうか。


で、さっき作ったメニューの中のコマンドボタンと、今のマクロとを結び付けます。
コマンドボタンのプロパティの中で結び付けるんですね。

イベントというプロパティ群の中に、「クリック時」というのがあります。このボタンをクリックしたときに何をするのか、指示をするわけです。
さっき作ったマクロを、それぞれのボタンをクリックしたときに動くように指定していきましょう。

で、フォームをフォームビューに切り替えて、ボタンをクリックしてみます。
「おしまい」をクリックすると終わっちゃいますんで、それ以外のボタンをとりあえずクリックしてみてください。

例えば[検索画面]をクリックすると、最初に作った照会フォーム、出てきます?で、メニュー画面閉じます?

動かないとかエラーが出るとかいう場合は、マクロがおかしい。
エラーメッセージをよく読んで、マクロをもう一度デザイン画面で開いて確認してみましょう。


照会フォーム、出ます?マクロの役割、なんとなくつかんでいただけましたか?

さてー・・・。照会フォーム出たのはいいですけど、これ、用が済んで閉じても、さっきのメニュー画面に戻るわけじゃないですよね。
あれ、閉じちゃいましたからねぇ。
この照会フォームの中にも、「メニュー画面をもう一度開いて、この照会フォームは閉じる」っていう動きをするマクロ、動くようにしないと処理がつながらないですよね。

じゃ、そこんとこ作ってみましょうか。照会フォームをデザインビューにひっくり返します。
で、同じ要領でコマンドボタンをどっかに作ります。配置や標題はお任せしますね。色は変えられないんですよ。

で、このコマンドボタンのプロパティを見て、さっき扱った「クリック時」の欄をクリックしてください。

クリックすると、ちっちゃいボタン、ふたつ出てきますよね。
さっきは左側のリストボタンの方使いましたけど、今度は右側のピリオド三つのボタン(ビルドボタン)をクリックします。

そうすると・・・んー?これ、どこかで見たような気もしますが・・・まあいいか。下のような画面が出てきますよね。

マクロビルダを選んで[OK]します。

と、あれま。いきなりマクロ名を付けろとな・・・。まだ何も作ってないのに・・・。
とりあえず仰せの通りに、適当な名前を付けましょう。

なんでもいいんですけどね。後で分かりやすそうな名前を直感で決めてください。

後はふつうのマクロの作り方です。

で、マクロを保存しながら閉じます。


こうして、フォームにコマンドボタンを作って、そのボタンをクリックしたら別のフォームが開くとか、いろいろな処理をやってくれるマクロを作って割り当てておくんですね。

もちろん、マクロが働くのははコマンドボタンをクリックしたときだけじゃないんで、これはほんの一例ですけれど・・・。
とりあえずマクロってどんなものか、イメージをつかんでくださいね。

あと、作り方も、他のオブジェクトのように作り始めることもできますし、コマンドボタンなどのプロパティから作るやり方もあります。
決まった作り方はないので、作りやすい方法で作っていけばいいと思いますよ。


さてさて、いろいろお話してきましたが、なんだかいろいろめんどくさそうですよねぇ。
Accessに関して、どんな印象お持ちになりましたでしょう。

テーブル、クエリー、フォーム、レポート、マクロという5種類のパーツを、好きなだけ好きな形に作って、組み合わせて、ひとつの仕組みを作るのが、MS-Accessです。顧客管理がしたければ、その処理に必要なオブジェクトを必要な数だけ揃えます。商品管理、請求書発行、見積作成・・・どれもこれも、みなさんの工夫次第でどうにでもなるってわけです。

で、みなさんは、Access使ってどんなシステム作ります??