Microsoft Access では、コマンド ボタン、テキスト ボックス、フォーム、レポートなどのユーザー インターフェイス (UI) オブジェクトに添付されるマクロを UI マクロと呼びます。 テーブルに添付されるデータ マクロとは区別されます。 (UI) マクロを使うのは、別のオブジェクトを開いたり、フィルターを適用したり、エクスポート操作を始めたりというような一連のアクションおよびその他多くのタスクを自動化するためです。 この記事では、新しく設計しなおされたマクロ ビルダーを紹介し、UI マクロの作成に関連する、基本的なタスクについて説明します。
注: この記事は、Access Web アプリには適用されません。
この記事の内容
概要
マクロは、マクロ オブジェクト (スタンドアロン マクロとも呼ばれます) に含めるか、フォーム、レポート、コントロールのイベント プロパティに埋め込むことができます。 埋め込みマクロは、マクロが埋め込まれたオブジェクトやコントロールの一部となります。 マクロ オブジェクトは、ナビゲーション ウィンドウの [マクロ] に表示されますが、埋め込みマクロは表示されません。
各マクロは、1 つ以上のマクロ アクションから構成されます。 作業している状況により、一部のマクロ アクションは使用できないことがあります。
マクロ ビルダー
マクロ ビルダーの主な機能のハイライトをいくつか次に示します。
-
アクション カタログ マクロ アクションは、種類別に整理され、検索可能です。
-
IntelliSense 式を入力すると、IntelliSense によって可能な値が提案され、正しい値を選択できます。
-
キーボード ショートカット キーの組み合わせを使用して、マクロの書き込みを迅速かつ簡単に行うことができます。
-
プログラム フロー コメント行とアクションのグループを使用して、より読みやすいマクロを作成します。
-
条件付きステートメント If/Else/Else If の入れ子がサポートされるため、さらに複雑なロジックを実行できます。
-
マクロの再利用 アクション カタログには、作成した他のマクロが表示され、作業中のマクロにコピーできます。
-
簡単な共有 マクロをコピーし、電子メール、ニュースグループ投稿、ブログ、またはコード サンプル Web サイトに XML として貼り付けます。
マクロ ビルダーの主要な領域について説明するビデオを次に示します。
スタンドアロン マクロを作成する
この手順では、ナビゲーション ウィンドウの [マクロ] の下に表示されるスタンドアロン マクロ オブジェクトを作成します。 スタンドアロン マクロは、アプリケーションの多くの場所でマクロを再利用する場合に便利です。 他のマクロからマクロを呼び出すと、同じコードが複数の場所に重複しないようにすることができます。
-
[作成] タブの [マクロとコード] グループで [マクロ] をクリックします。
[アクセス] を選択すると、マクロ ビルダーが開きます。 -
クイック アクセス ツール バーで [保存] をクリックします。
-
[名前を付けて保存] ダイアログ ボックスにマクロの名前を入力して、[OK] をクリックします。
-
アクションをマクロに追加するに進みます。
埋め込みマクロを作成する
次の手順でマクロを作成して、オブジェクトのイベント プロパティに埋め込みます。 このようなマクロはナビゲーション ウィンドウに表示されませんが、読み込み時やクリック時などのイベントから呼び出すことができます。
マクロはフォーム オブジェクトやレポート オブジェクトの一部になるため、特定のフォームやレポートに固有のタスクを自動化する場合は、埋め込みマクロをお勧めします。
-
ナビゲーション ウィンドウで、マクロを含めるフォームまたはレポートを右クリックし、[レイアウト ビュー] をクリックします。
-
プロパティ シートがまだ表示されていない場合は、F4 キーを押して表示します。
-
マクロの埋め込み先のイベント プロパティが含まれるコントロールまたはセクションをクリックします。 プロパティ シートの上部にある [選択の種類] ボックスの一覧を使って、コントロールやセクション (またはフォームやレポート全体) を選ぶこともできます。
-
[プロパティ シート] 作業ウィンドウで、[イベント] タブをクリックします。
-
マクロをトリガーするイベントのプロパティ ボックスをクリックします。 たとえばコマンド ボタンでは、ボタンがクリックされたときにマクロを実行する場合、[クリック時] プロパティ ボックスをクリックします。
-
プロパティ ボックスに [埋め込みマクロ] という語句が表示される場合は、このイベントにマクロがすでに作成されているということです。 この手順の残りの部分に従って、このマクロを編集できます。
-
プロパティ ボックスに [イベント プロシージャ] という語句が表示される場合は、このイベントに Visual Basic for Applications (VBA) プロシージャがすでに作成されているということです。 このイベントにマクロを埋め込む前に、プロシージャを削除する必要があります。 [イベント プロシージャ] という語句を削除してプロシージャを削除できますが、最初にイベント プロシージャを調べて、それを削除してもデータベースに必要な機能が破損しないことを確認してください。 埋め込みマクロを使って、VBA プロシージャの機能を再作成できる場合があります。
-
[ ビルド ] ボタン クリックします。
-
[ビルダーの選択] ダイアログ ボックスが表示される場合は、[マクロ ビルダー] が選択されていることを確認してから [OK] をクリックします。
[アクセス] を選択すると、マクロ ビルダーが開きます。 次のセクションに進んで、アクションをマクロに追加してください。
アクションをマクロに追加する
アクションは、マクロを構成する個別のコマンドです。各アクションには、FindRecord や CloseDatabase のように、その実行内容に従って名前が付いています。
手順 1: マクロ アクションを参照するか探す
アクションを追加する最初の手順では、[新しいアクションの追加] ボックスの一覧またはアクション カタログでアクションを探します。
注:
-
既定では、[新しいアクションの追加] ボックスの一覧およびアクション カタログには、信頼できないデータベースで実行するアクションのみが表示されます。 すべてのアクションを表示するには、次のように操作します。
-
[デザイン] タブの [表示/非表示] グループで [すべてのアクションを表示] をクリックします。
-
-
アクション カタログが表示されていない場合は、[デザイン] タブの [表示/非表示] で、[アクション カタログ] をクリックします。
アクションを見つけるには、次のいずれかの方法を使用します。
-
[新しいアクションの追加] ボックスの一覧の矢印をクリックし、下にスクロールしてアクションを探します。 プログラム フロー要素が先に表示され、次にマクロ アクションがアルファベット順に表示されます。
-
[アクション カタログ] ウィンドウでアクションを参照します。 アクションはカテゴリごとにまとまっています。 各カテゴリを展開して、アクションを表示してください。 アクションを選ぶと、アクション カタログの下部にアクションの簡潔な説明が表示されます。
-
[アクション カタログ] ウィンドウの上部にある検索ボックスに文字列を入力し、アクションを検索します。 文字列を入力するに従って、アクションのリストにフィルターが適用されて、その文字列を含む、すべてのマクロが表示されます。 マクロ名および説明の両方で、入力した文字列が検索されます。
手順 2: アクションをマクロに追加する
必要なマクロ アクションが見つかったら、次のいずれかの方法によってアクションをマクロに追加します。
-
アクションを [新しいアクションの追加] リストで選ぶか、アクション名をボックスに入力し始めます。 [新しいアクションの追加] リストが表示されていたポイントに、アクションは追加されます。
-
アクション カタログからマクロ ウィンドウにアクションをドラッグします。 挿入バーが表示されて、マウス ボタンを放したときにアクションが挿入される場所が示されます。
-
アクション カタログでアクションをダブルクリックします。
-
アクションをマクロ ウィンドウで選んでいる場合は、選択したアクションの下に新しいアクションが追加されます。
-
[Group]、[If]、[Else If]、[Else]、[Submacro] ブロックをマクロ ウィンドウで選んでいる場合、新しいアクションはそのブロックに追加されます。
-
アクションやブロックをマクロ ウィンドウで選んでいない場合、新しいアクションはマクロの末尾に追加されます。
注:
-
1 つ以上のマクロを既に作成している場合、そのマクロはアクション カタログの [このデータベース] ノードに表示されます。
-
スタンドアロン マクロ ([マクロ] に表示されるもの) をマクロ ウィンドウにドラッグすると、RunMacro アクションが作成されて、ドラッグしたマクロが実行されます。 サブマクロがある場合は、ドロップダウン リストを使って呼び出すことができます。
-
RunMacro アクションを作成する代わりに、スタンドアロン マクロから現在のマクロにアクションをコピーする場合は、アクション カタログでアクションを右クリックして、[マクロのコピーを追加] をクリックします。
-
埋め込みマクロ (フォーム オブジェクトやレポート オブジェクトに表示されるマクロ) をマクロ ウィンドウにドラッグすると、そのマクロから現在のマクロにアクションがコピーされます。
-
-
データベース オブジェクトをナビゲーション ウィンドウからマクロ ウィンドウにドラッグして、アクションを作成することもできます。 テーブル、クエリ、フォーム、レポート、モジュールをマクロ ウィンドウにドラッグすると、テーブル、クエリ、フォーム、レポートを開くアクションが追加されます。 別のマクロをマクロ ウィンドウにドラッグすると、そのマクロを実行するアクションが追加されます。
-
-
手順 3: 引数を入力する
ほとんどのマクロ アクションには、最低 1 つの引数が必要です。 各引数の説明を表示するには、アクションを選択してから、ポインターを引数の上に移動します。 多くの引数では、ドロップダウン リストから値を選ぶことができます。 引数で式を入力する必要がある場合、IntelliSense は、次の図に示すように、入力時に可能な値を提案することで式を入力するのに役立ちます。
使う値が表示されたら、その値をダブルクリックするか、矢印キーを使ってその値を強調表示してから Tab キーか Enter キーを押して、式に追加します。
式の作成の詳細については、「式の概要」を参照してください。
Web データベースのプロパティで IntelliSense を使う
埋め込み UI マクロを Web 対応のフォームに作成しているときは、IntelliSense によってフォーム プロパティを式に追加できます。 ただし Web データベースの場合、UI マクロによってアクセスできるフォーム プロパティは一部だけです。 たとえば、Form1 という名前のフォームに Control1 という名前のコントロールがあるとすると、IntelliSense では [Forms]![Form1]![Control1].[ControlSource] を UI マクロの式に追加できます。 ただし、そのデータベースを Access Services に公開すると、その式を含むマクロがサーバーで実行されたときにエラーが発生します。
次の表では、Web データベースの UI マクロで使用できるプロパティを示します。
オブジェクトまたはコントロール |
使用できるプロパティ |
---|---|
フォーム |
Caption、Dirty、AllowAdditions、AllowDeletions、AllowEdits |
タブ コントロール |
Visible |
ラベル |
Caption、Visible、Fore Color、Back Color |
添付ファイル |
Visible、Enabled |
コマンド ボタン |
Caption、Visible、Enabled、Fore Color |
テキスト ボックス |
Enabled、Visible、Locked、Fore Color、Back Color、value |
チェック ボックス |
Enabled、Visible、Locked、Value |
画像 |
Visible、Back Color |
コンボ ボックス |
Enabled、Visible、Locked、Value |
リスト ボックス |
Enabled、Visible、Locked、Value |
Web ブラウザー |
Visible |
サブフォーム |
Enabled、Visible Locked |
ナビゲーション コントロール |
Enabled、Visible |
アクションを移動する
アクションは、マクロの上から下に順番に実行されます。 アクションをマクロで上か下に移動するには、次のいずれかの方法を使います。
-
アクションを目的の位置まで上か下にドラッグします。
-
アクションを選び、Ctrl キーを押しながら上向き矢印キーを押すか、Ctrl キーを押しながら下向き矢印キーを押します。
-
アクションを選び、マクロ ウィンドウの右側にある [上へ移動] 矢印または [下へ移動] 矢印をクリックします。
アクションを削除する
マクロ アクションを削除するには、次のように操作します。
-
アクションを選び、Del キーを押します。 マクロ ウィンドウの右側にある [削除] (X) ボタンをクリックすることもできます。
注:
-
If ブロックや Group ブロックなどのアクションのブロックを削除すると、ブロックのすべてのアクションも削除されます。
-
[上へ移動]、[下へ移動]、[削除] のコマンドは、マクロ アクションを右クリックすると表示されるショートカット メニューでも使用できます。
-
If、Else If、Else によってプログラム フローを制御する
特定の条件が満たされたときに限ってマクロ アクションを実行するには、If ブロックを使います。 これは、以前のバージョンの Access で使われていた Condition 列の代わりとなるものです。 If ブロックは、VBA などのその他の順次プログラミング言語と同じように、Else If ブロックと Else ブロックで拡張できます。
次の図は簡単な If ブロックを示しており、Else If ブロックと Else ブロックも含まれています。
If ブロックは、ExpirationDate フィールドが現在の日付より前の日付である場合に実行されます。
Else If ブロックは、ExpirationDate フィールドが現在の日付と等しい場合に実行されます。
Else ブロックは、前のブロックがどれも実行されない場合に実行されます。
If ブロックはここで終わります。
If ブロックをマクロに追加する
-
[If] を [新しいアクションの追加] ボックスの一覧から選ぶか、アクション カタログ ウィンドウからマクロ ウィンドウにドラッグします。
-
If ブロックの上部にあるボックスには、どのような場合にそのブロックを実行するかを決める式を入力します。 この式はブール値 (つまり、「はい」か「いいえ」に評価できる値) にする必要があります。
-
ブロック内に表示される [新しいアクションの追加] ボックスの一覧からアクションを選ぶか、アクション カタログ ウィンドウから If ブロックにアクションをドラッグして、If ブロックにアクションを追加します。
Else ブロックや Else If ブロックを If ブロックに追加する
-
If ブロックを選んでから 、ブロックの右下隅で [ Else の追加] または [Else If の追加] をクリックします。
-
Else If ブロックを追加している場合は、どのような場合にそのブロックを実行するかを決める式を入力します。 この式はブール値 (つまり、True か False に評価できる値) にする必要があります。
-
ブロック内に表示される [新しいアクションの追加] ボックスの一覧からアクションを選ぶか、アクション カタログ ウィンドウからブロックにアクションをドラッグして、Else If ブロックまたは Else ブロックにアクションを追加します。
注:
-
If、Else If、Else のブロックを追加するコマンドは、マクロ アクションを右クリックすると表示されるショートカット メニューから使用できます。
-
If ブロックは 10 レベルの深さまで入れ子にすることができます。
-
サブマクロを作成する
各マクロには複数のサブマクロを含めることができます。 サブマクロは、RunMacro または OnError のマクロ アクションから名前で呼び出されるように設計されています。
Submacro ブロックは、アクションをマクロに追加するで説明したように、マクロ アクションを追加する場合と同じ方法でマクロに追加できます。 Submacro ブロックを追加したら、マクロ アクションをドラッグするか、ブロック内に表示される [新しいアクションの追加] リストからアクションを選びます。
注:
-
1 つ以上のアクションを選んで右クリックしてから [サブマクロ ブロックの作成] を選んで、Submacro ブロックを作成することもできます。
-
サブマクロは常にマクロの最後のブロックである必要があります。サブマクロの下にアクション (さらにサブマクロを除く) を追加することはできません。 サブマクロのみを含むマクロを実行し、必要なサブマクロに特に名前を付けない場合は、最初のサブマクロのみが実行されます。
-
サブマクロを呼び出すには (たとえば、イベント プロパティで、または RunMacro アクションまたは OnError アクションを使用して)、次の構文を使用します:
macroname.submacroname
関連アクションをグループにまとめる
アクションをグループにまとめて、意味のある名前をグループに付けると、マクロの読みやすさを改善できます。 たとえば、フォームを開いてフィルターを適用するアクションをグループにまとめて、"フォームを開いてフィルターを適用" という名前を付けることができます。 この操作を行うと、相互に関連しているアクションがわかりやすくなります。 Group ブロックは、アクションの実行方法には影響せず、グループを呼び出したり個別に実行したりすることはできません。 主な用途は、アクションのグループにラベルを付けて、マクロを読むときにわかりやすくすることです。 大きいマクロを編集しているときは、各グループ ブロックを 1 行に縮小して、スクロールの量を減らすこともできます。
グループにまとめるアクションが既にマクロ内にある場合は、次の手順に従って Group ブロックに追加します。
-
グループ化するアクションを選びます。
-
選んだアクションを右クリックし、[グループ ブロックの作成] をクリックします。
-
Group ブロックの上部にあるボックスに、グループの名前を入力します。
アクションがまだ存在しない場合は、次の手順に従います。
-
アクション カタログからマクロ ウィンドウに Group ブロックをドラッグします。
-
Group ブロックの上部にあるボックスに、グループの名前を入力します。
-
アクション カタログから Group ブロックにマクロ アクションをドラッグするか、ブロック内に表示される [新しいアクションの追加] リストからアクションを選びます。
Group ブロックには別の Group ブロックを含めることができ、最大 9 レベルの深さまで入れ子にすることができます。
マクロ アクションまたはブロックの展開と折りたたみ
新しいマクロを作成するときは、マクロ ビルダーにマクロ アクションとすべての引数が表示されます。 マクロのサイズによっては、マクロ アクション (およびアクションのブロック) の一部またはすべてを折りたたんでマクロを編集すると良いでしょう。 この操作を行うと、マクロの構造を全体的に確認しやすくなります。 必要に応じて、アクションの一部またはすべてを展開して編集できます。
1 つのマクロ アクションかブロックの展開または折りたたみ
-
マクロかブロック名の左にあるプラス記号 (+) またはマイナス記号 (-) をクリックします。 上向き矢印キーと下向き矢印キーを押してアクションかブロックを選び、左向き矢印キーか右向き矢印キーを押して折りたたむか展開します。
すべてのマクロ アクションの展開または折りたたみ (ブロックを除く)
-
[デザイン] タブの [折りたたむ/展開する] グループで、[アクションの展開] または [アクションの折りたたみ] をクリックします。
すべてのマクロ アクションおよびブロックの展開または折りたたみ
-
[デザイン] タブの [折りたたむ/展開する] グループで、[すべて展開] または [すべて折りたたみ] をクリックします。
ヒント: 折りたたまれたアクションの上にポインターを移動すると、その内容を調べることができます。 アクションの引数はヒントに表示されます。
マクロ アクションのコピーと貼り付け
既にマクロに追加したアクションを繰り返す必要がある場合は、ワード プロセッサでテキストの段落に行う操作と同様に、既存のアクションをコピーして貼り付けることができます。 アクションを貼り付けると、現在選択されているアクションの下に挿入されます。 ブロックが選択されている場合、アクションはブロック内に貼り付けられます。
ヒント: 選んだアクションをすぐに複製するには、Ctrl キーを押しながら、コピー先のマクロの場所にアクションをドラッグします。
他のユーザーとマクロを共有する
マクロ アクションをクリップボードにコピーすると、テキストを受け入れるアプリケーションに拡張マークアップ言語 (XML) として貼り付けることができます。 このため、マクロをメール メッセージで同僚に送信したり、ディスカッション フォーラム、ブログ、その他の Web サイトにマクロを投稿したりすることができます。 その後、受信者は XML をコピーし、アクセス マクロ ビルダーに貼り付けることができます。 マクロは、作成時の状態で再作成されます。
マクロを実行する
次のいずれかの方法でマクロを実行できます。
-
ナビゲーション ウィンドウでマクロをダブルクリックします。
-
RunMacro マクロ アクションまたは OnError マクロ アクションでマクロを呼び出します。
-
オブジェクトのイベント プロパティにマクロ名を入力します。 そのイベントがトリガーされると、マクロは実行されます。
マクロをデバッグする
マクロの実行で問題が発生する場合は、ツールをいくつか使って問題の原因を突き止めることができます。
エラー処理アクションをマクロに追加する
各マクロの作成時にエラー処理アクションを追加して、マクロ内に永久に残すことをお勧めします。 この方法を使うと、エラー発生時にその説明が表示されます。 エラーの説明によってエラーについて理解できるようになるため、問題をさらに速く訂正できるようになります。
エラー処理サブマクロをマクロに追加するには、次の手順に従います。
-
マクロをデザイン ビューで開きます。
-
マクロの最下部で、[新しいアクションの追加] ボックスの一覧から [Submacro] を選びます。
-
Submacro という語句の右にあるボックスに、ErrorHandler などのサブマクロの名前を入力します。
-
Submacro ブロック内に表示される [新しいアクションの追加] ボックスの一覧から、MessageBox マクロ アクションを選びます。
-
[メッセージ] ボックスに、「=[MacroError].[Description] 」というテキストを入力します。
-
マクロの最下部で、[新しいアクションの追加] ボックスの一覧から [OnError] を選びます。
-
[移動先] 引数を [マクロ名] に設定します。
-
[マクロ名] ボックスにエラー処理サブマクロの名前を入力します (この例では ErrorHandler)。
-
OnError マクロ アクションをマクロの先頭にドラッグします。
次の図は、OnError アクションおよび ErrorHandler というサブマクロを含むマクロを示しています。
OnError マクロ アクションがマクロの上部に配置されており、エラーが発生すると、ErrorHandler サブマクロが呼び出されます。
ErrorHandler サブマクロは、OnError アクションによって呼び出された場合に限って実行され、エラーについて説明するメッセージ ボックスを表示します。
シングル ステップ コマンドを使用する
シングル ステップはマクロ デバッグ モードであり、これを使用すると、マクロを 1 アクションずつ実行できます。 各アクションが実行されると、アクションに関する情報および結果として発生したエラー コードがダイアログ ボックスに表示されます。 ただし、[マクロのシングル ステップ] ダイアログ ボックスにはエラーの説明が表示されないため、前のセクションで説明したエラー処理サブマクロの方法を取ることをお勧めします。
シングル ステップ モードを開始するには:
-
マクロをデザイン ビューで開きます。
-
[デザイン] タブで、[ツール] グループの [シングル ステップ] をクリックします。
-
マクロを保存して閉じます。
次回マクロを実行したときに、[マクロのシングル ステップ] ダイアログ ボックスが表示されます。 このダイアログ ボックスには、各アクションについて次の情報が表示されます。
-
マクロ名
-
条件 (If ブロック)
-
アクション名
-
引数
-
エラー番号 (エラー番号が 0 であるということは、エラーが発生しなかったということです)
アクションを実行するたびに、ダイアログ ボックスの 3 つのボタンのいずれかをクリックします。
-
マクロの次のアクションに関する情報を確認するには、[ステップ] を押します。
-
現在実行中のすべてのマクロを停止するには、[すべてのマクロを停止] をクリックします。 次回マクロを実行したとき、シングル ステップ モードはまだ有効です。
-
シングル ステップ モードを終了してマクロの実行を続けるには、[継続] をクリックします。
注:
-
マクロの最終アクションの後で [ステップ] を押した場合、次回マクロを実行したとき、シングル ステップ モードはまだ有効です。
-
マクロの実行中にシングル ステップ モードに入るには、Ctrl キーを押しながら Break キーを押します。
-
マクロの特定のポイントでシングル ステップ モードに入るには、そのポイントに SingleStep マクロ アクションを追加します。
-
シングル ステップ モードは、Web データベースでは使用できません。
-
マクロを VBA コードに変換する
マクロは、Visual Basic for Applications (VBA) プログラミング言語で使用できるコマンドのサブセットを提供します。 マクロよりも多くの機能が必要であると判断した場合は、スタンドアロン マクロ オブジェクトを VBA コードに簡単に変換し、VBA が提供する拡張機能セットを使用できます。 ただし、VBA コードはブラウザーでは実行されないことに注意してください。Web データベースに追加する VBA コードは、データベースが Access で開いている場合にのみ実行されます。
注: 埋め込みマクロを VBA コードに変換することはできません。
マクロを VBA コードに変換するには:
-
ナビゲーション ウィンドウでマクロ オブジェクトを右クリックし、[デザイン ビュー] をクリックします。
-
[デザイン] タブの [ツール] グループで [マクロを Visual Basic に変換] をクリックします。
-
[マクロの変換] ダイアログ ボックスで、エラー処理コードとコメントを VBA モジュールに追加するかどうかを指定し、[変換] をクリックします。
マクロが変換されたことが確認され、Visual Basic Editor が開きます。 変換されたマクロをプロジェクト ウィンドウでダブルクリックし、モジュールを表示して編集します。