<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--基本操作を考える
データベース テーブル フォーム クエリー レポート マクロ&仕上げ
1 1 2 3 4 1 2 3 4 5 6 7 B 1 2 3 4 5 6  8 1 2 3 4 5 1 2 3 4 S



■マクロを作る 1■

でも・・・すでに何回か、マクロって作ってるんですよね・・・。細かい作り方とかお話してないですけど・・・。
お察しいただいてる方もあるかもわかりませんけど、マクロっていうのは目に見えて形あるものじゃないんです。

大体はフォームでしょうか・・・コマンドボタンとかにくっついて、クリックされたときどういう動きを取るかとか、そういう感じで他のオブジェクトに寄生(笑)して初めて存在しえるものなんです。目的としては・・・主に処理の自動化。
データベースウィンドウ開いて、目的のフォームを開けばいいんですけど、それを、メニュー画面作ってコマンドボタンクリックしたら入力フォームが出てきて・・・なんて、

動きを作りたいときに作るオブジェクトです。

だから、いらないっていっちゃえばいらないんですけどね。。。でも、それを言っちゃおしまいなんで、ひとつ「メニュー画面作り」に挑戦しながら、マクロについて理解を深めていきましょう。どう活用するか、いつ使うかは、皆さんそれぞれお考えになってください。じゃ、がんばりましょう。もうちょっとだ!


まず、現状の整理をしてみたいと思います。
わたしんとこには今、全部で5つのフォームがあります。

「社員の一覧」:表形式フォーム。売上の合計とか人数とかをフッター部分に表示するようにしているフォーム。

「身代金フォーム」:(ひどい名前)一番最初に作った単票形式のフォーム。

「組で抽出」:組名をコンボから選ぶことで、その組に所属する人だけの表示に切り替える、動きのあるフォーム。

「売上一覧」:売上金額上位10名だけを表示するフォーム。

「売上金額一覧」:テキストボックスに指定した金額以上の売上を達成している社員だけの表示にする、動きのあるフォーム。

・・・もっと考えて名前付けないと、ワケわかんなくなりますね・・・。
まあいいや。今日は練習ですから、あんまり考えずにやりましょう。失敗は成功のもとです!

じゃ、マクロを作り始める前に、土台となる「メニューのフォーム」を作りましょう。

フォームを作ります。
「デザインビュー」という方法で、テーブルやクエリーは一切選ばずに新規作成します。

と、何にもないフォームができますよね。
色とか、フォーム全体の書式とかはお任せしますね(スクロールバー、レコードセレクタ、移動ボタンなどなど)

フォームの中に、コマンドボタンをひとつ、適当に作ってください。

で、このフォーム、「メニュー」とでも名前を付けて保存をしてください。

コマンドボタンのプロパティをご覧いただいて・・・。

まず、忘れないうちに、ボタンの名前を変えてしまいましょう。
あ、もちろん「コマンドxx」のままでもいいんですけど、なんかわかりにくいですよね・・・多分、わかりにくくなっちゃうと思うんで・・・。
何でもいいですよ。

で、「このボタンをクリックしたら動くマクロ」というのを、ここから作り始めます。

別にこんなでかい字で書かなくてもいいんですが・・・気合入れていきましょう。気合。

なんか・・・どっかで見たことある画面ですよね。

何回か今まで出てきてますから、大体お察しいただけるんじゃないかと思うんですけど、これでマクロビルダを選びます。

なんも作ってないのに、いきなり名前を付けろとか言われても・・・とりあえず「メニュー」とつけてください。ワケは後で話します。


さて、そうすると、下のような画面になりますね。
これが、マクロの作成をするための画面です。マクロにはプレビューとかないから、この画面だけで勝負します。

んでは、上の図のピンク色の丸印のトコあたりクリックしてください。なんか出てきます。

<マクロアクションの一覧>

アクション名 解説 使用頻度
SQLの実行 SQL文を直接発行するときに使うアクションです。
アプリケーションの実行 ExcelやWord等のWindowsアプリやDOSアプリなどを実行します。
イベントのキャンセル このマクロの呼び出し元となったフォームからのイベントなどをキャンセルします。
エコー マクロの実行中の結果を表示するかどうかを設定します。 ★★★
オブジェクトのコピー 同じオブジェクトを別名でもうひとつ作る場合や、他のmdbにコピーするときに使います。
オブジェクトの再描画 保留になっていた画面の更新や再計算を実行します。 ★★
オブジェクトの削除 指定したオブジェクトを削除します。
オブジェクトの選択 指定したオブジェクトを選択します。 ★★
オブジェクトの送信 指定したオブジェクトを、メールメッセージに添付して送信します。
オブジェクトの保存 指定したオブジェクトを保存します。
キー送信 キー操作を送信します。キー入力したのと同じ効果があります。
クエリを開く クエリを開きます。またアクションクエリを実行します。 ★★★
コマンドの実行 Accessのメニューコマンドを実行します。
コントロールの移動 フォーム内の指定されたコントロールにフォーカスを移動します。 ★★★
サイズ変更 ウィンドウのサイズを変更したり移動したりします。
ストアドプロシージャを開く ストアドプロシージャを開きます。
ダイアグラムを開く スキーマを開きます。
ツールバーの表示 ツールバーの表示/非表示を切り替えます。
データアクセスページを開く データアクセスページを開きます。
データベース変換 他のデータベースからデータをインポートもしくはリンクします。 ★★
テーブルを開く テーブルを開きます。
テキスト変換 テキストファイルからデータをインポートするか、リンクします。 ★★
ビューを開く デザインビュー、データシートビュー、印刷プレビューのいずれかを開きます。
フィルタの実行 テーブル、フォーム、レポートに対してフィルタを実行します。 ★★
フォームを開く フォームを開きます。 ★★★
プロシージャの実行 VisualBasicのFunctionプロシージャを実行します
ページの移動 フォームで改ページします(次ページがある場合)
マクロの実行 マクロの中から、更に別のマクロを実行します。 ★★
マクロの中止 実行中のマクロを中止します。 ★★★
メッセージの設定 確認メッセージを非表示にしたい場合などに使用します。 ★★★
メッセージボックス メッセージボックスを表示させます。 ★★★
メニューの設定 メニューバーの設定をします。
メニューの追加 フォームやレポートのメニューバーにメニューを追加します。
モジュールを開く VisualBasicモジュールをデザインビューで開き、プロシージャを表示します。
レコードの移動 指定されたレコードへ移動します。 ★★★
レコードの検索 指定されたレコードを検索します。
レポートを開く レポートを開きます。 ★★★
ワークシート変換 Lotus1-2-3やMS-Excelのワークシートをインポート、リンク、エクスポートします。 ★★
印刷 データシートやフォーム、レポート、モジュールを印刷します。
警告音 警告音を鳴らします。 ★★
元のサイズに戻す ウィンドウを最小化、最大化の状態から元のサイズに戻します。 ★★
砂時計ポインタ マクロ実行中、マウスポインタの形を砂時計の形にしたり戻したりします。 ★★
再クエリ 再クエリします(※1) ★★★
最小化 ウィンドウを最小化します。
最大化 ウィンドウを最大化します。
次を検索 「レコードの検索」などで指定された条件に一致する、次のレコードを検索します。
終了 Accessを終了します。 ★★★
出力 指定したオブジェクトをExcelやhtml形式にして保存します。
全マクロの中止 実行中のすべてのマクロを中止します。 ★★
全レコードの表示 アクティブなテーブル、クエリ、フォームに適用されているフィルタを解除します。 ★★
値の代入 コントロール、フィールド、プロパティなどに値を設定します。 ★★★
閉じる 指定されたウィンドウを閉じます。 ★★★
名前の変更 指定されたオブジェクトの名前を変更します。

※1:再クエリとは、レコードの変更を反映し、新たに追加されたレコードを表示し、削除されたレコードを除去するために、アクティブ フォームまたはデータシートの基になっているクエリを返すことを意味します。

・・・と、いっぱいあります。
もうお気づきと思いますが、こんなん丸暗記してもどうしようもないんです。

どういう処理を作りたいのか、まず考えて、その処理をやるためにはどのマクロアクションをどうやって作っていくのか、ということを考えます。
はっきり言って、わたし、Accessは1.0英語版から使ってますけども、まだ一回も使ったことないマクロアクションたくさんありますよ。
使うときになってから調べればいいんです。
え?じゃあなんでこんな一覧表載せてるのかって??気分でス。
っていうのは冗談で、左側に、わたしの場合のマクロアクションの使用頻度を載せてみましたので、参考にしてください。
よく使うのなんて10個くらいじゃないですかね。後のは、その時誰かに聞きながら使っていったっていいと思いますよ。。

逆にいうと手持ちのカードはこれしかないわけですから、いろいろ組み合わせて工夫しないと、思ったような処理の自動化はかなわない、ってことになります。

じゃ、実際作ってみましょう。