10.マクロとは
Accessのマクロは、「フォームを開く」「印刷する」といったAccessの操作コマンドで組み立てる簡易的なプログラミング言語です。処理の内容をAccessの操作コマンドで表すため、専門的な知識を学ばなくても容易に作成できます。
マクロのやくわり
 定型の作業や処理の自動化を行うのが、Accessのマクロの役割です。「フォームを開く」「レポートを印刷する」といったAccessの操作コマンドを用いて作成できるため、VBAやプログラミングの専門的な知識が無くても作成できるのが特徴です。また、多くの部分を日本語で作成できるため、分かりやすいという特徴もあります。
 また、Access 2010からは、マクロ作成画面が全面的に刷新され、従来型よりもマクロの内容が分かりやすく、かつ作成しやすくなりましたが、Access 2013/2010で作成したマクロをAccess 2007で編集できないといった、旧バージョンのAccessとの互換性が失われたという残念な一面もあります。

図 10-1マクロの作成画面と作成例
Access 2013/2010でのマクロ作成例とAccess 2007でのマクロ作成例
注:Access 2013/2010でのマクロ作成画面は、Access 2010による代表例です。

ワンポイント
ExcelマクロとAccessマクロとの違い
AccessとExcelでは、マクロの意味と作り方が大きく異なります。Accessのマクロは、コマンドの実行順序を定義した簡易的なプログラムであるのに対し、ExcelマクロはVBAで作成した本格的なプログラムのことを示します。
マクロの基礎知識
◆アクションと引数
 マクロで行う処理の内容を定義する部分です。アクションは、Accessの操作コマンドで記述します。アクションの内容は一覧で選択できるため、うろ覚えでも作成できます。
 また、アクションの適用先やアクション実行時に必要な情報は、引数へ定義します。例えば、「フォームを開く」というコマンドを実行する場合は、開くフォームの名前を引数で指定します。
 なお、Access 2010にてマクロ作成画面が刷新されたため、アクションと引数の作成方法が大きく変わりました。新型では、マクロのアクションと引数がまとめられ、編集を一カ所で行えます。従来型では、表形式でアクションを定義し、各アクションの引数の設定は、下段の「アクションの引数」で行います。

図 10-2アクションと引数の新旧相違点
Accessマクロの新型と従来型の違い。どちらのマクロも同じ処理を行っています。

ワンポイント
全てのアクションを表示する
Access 2007以降においては、初期状態では一部のアクションしか表示されません。全てのアクションを表示するには、[デザイン]タブ−[表示/非表示]の中にある「すべてのアクションを表示」ボタンをクリックします。
「すべてのアクションを表示」ボタンをクリックします。

◆マクロ名/プログラムフロー「サブマクロ」
 一つのマクロの中に、いくつかの異なる手順(サブルーチン的なもの)を作成するときに使います。たとえば、あるフォーム用のマクロを作るとき、サブマクロ(マクロ名)を使うと「Aボタン用の処理」「Bボタン用の処理」のように一つのマクロ内に複数の処理を作成できます。
 サブマクロで定義した部分は、サブマクロ名を含めて明示的に呼び出さない限りは実行されません。

図 10-3マクロ名とサブマクロの使用例と新旧相違点
Access 2013/2010はプログラムフローの「サブマクロ」で作成します。Access 97〜2007はマクロ名で定義します。

ワンポイント
グループ化について
Access 2013/2010から使用できるようになった「グループ化」は、単純に関連する処理をまとめて、どの部分が何の処理を行っているかを明確しマクロ全体を分かりやすくするために使います。実行フローには影響しません。なお、グループ化を使ったマクロはAccess 2007で編集できなくなります。
グループ化を使ったマクロ

◆条件/プログラムフロー「If」
 特定の条件が整うときだけアクションを実行する場合に記述、もしくは使用します。条件の内容は、例えば「フォーム上の商品単価の項目が100以上の場合」のような大小比較によるものです。

図 10-4条件とIfの使用例と新旧相違点
Access 2013/2010ではIfでまとめます。Access 97〜2007では行ごとに(アクションごとに)条件を設定します。

◆コメント
 どのような処理を実行するかなど、マクロの定義に対する説明文などを記入する部分です。コメントは単なるメモ書きであるため、マクロの処理内容に影響しません。

◆埋め込みマクロと独立マクロ
 埋め込みマクロは、Access 2007からで追加された機能です。マクロを、フォーム/レポートの定義の一部として作成できます。独立マクロは、マクロオブジェクトで作成する従来型のマクロです。

 独立マクロは、マクロの定義とフォーム/レポートを別々に作成し、それらを組み合わせて使用します。そのため、特定のフォーム/レポート固有のマクロがあったとしても、それを独立したマクロとして作成しなくてはならず、しまいにはマクロが膨大な量になり、管理が面倒でした。

 埋め込みマクロを使うと、マクロをフォーム/レポートの機能の一部として作成できるため、マクロの管理がラクになります。ある程度共通的な機能を持ったマクロは独立型で作成し、フォーム/レポート固有のマクロは埋め込み型で作成するのがコツです。

Copyright(C) 1999-2014 結城圭介(Ver.3.51) All rights reserved