Accessのマクロビルダーで業務処理を自動化する|OpenForm・ApplyFilter・If条件分岐・MessageBoxの設定手順とMOS試験対策

「ボタンを押すだけで別のフォームを開きたい」「一覧フォームで選択した行の詳細を自動表示したい」——Accessのマクロ機能を使えば、こうした処理をコードを1行も書かずに実現できます。マクロビルダーは、アクション(操作命令)をリストから選んでパラメータを入力していくビジュアルな自動化ツールです。VBAよりも敷居が低く、フォームやレポートの基本操作を素早く自動化するのに適しています。

AccessのマクロはVBAと似ていますが異なります。VBAはプログラミング言語で記述する汎用的な自動化手段であり、マクロはAccessが用意したアクション一覧から選択するノーコードの自動化手段です。コードを書けない方でも業務フローの自動化ができ、MOS Access試験でも独立したスキル領域として出題されます。

本記事では、Accessマクロとは何か・VBAとの違い・マクロビルダーの起動方法、よく使うアクション(OpenForm・ApplyFilter・MessageBox・GoToControl・CloseWindow)の設定手順、If条件分岐を使った動的なフロー制御、実務別マクロパターン5選、よくあるつまずきと対処法、MOS試験の出題ポイントまでを解説します。


Accessのマクロビルダーで業務処理を自動化する|OpenForm・ApplyFilter・If条件分岐・MessageBoxの設定手順とMOS試験対策 - 解説
目次

Accessのマクロとは何か

Accessのマクロとは、アクション(OpenForm・MessageBoxなど)を順番に並べて「このとき→この処理をする」という手順書を作るノーコードの自動化機能です。ナビゲーションウィンドウの「マクロ」オブジェクトとして独立して作成でき、ボタンクリック・フォームを開いたとき・フォームを閉じるときなど各種イベントに割り当てられます。

比較項目マクロVBA
作成方法マクロビルダー(ビジュアル選択)VBEでコード記述
プログラミング知識不要必要
条件分岐Ifブロックで対応可If~ElseIf~Endで柔軟に制御
繰り返し処理ForEachRecord・WhileループなどMacroアクション一部対応For~Next・Do~Loopで完全制御
エラーハンドリングOnErrorアクションで一部対応On Error GoTo等で詳細制御
デバッグシングルステップ実行が可能ブレークポイント・イミディエイトウィンドウ
MOS試験での位置付け出題あり(マクロ作成・割り当て・実行)エキスパートで一部出題

マクロはAccessデータベースに専用のオブジェクトとして保存されます。ナビゲーションウィンドウの「マクロ」グループに表示され、ダブルクリックで直接実行できます。また、フォームやレポートのイベントプロパティ(OnClick・OnLoadなど)にマクロ名を指定することでイベント駆動の自動化が実現します。

マクロビルダーの起動方法

新しいマクロオブジェクトとして作成する

  1. リボン「作成」タブ→「マクロとコード」グループにある「マクロ」ボタンをクリックする
  2. マクロビルダーウィンドウが開く
  3. 「新しいアクションの追加」ドロップダウンから実行したいアクションを選択する
  4. 必要なパラメータを入力してアクションを設定する
  5. 上書き保存(Ctrl+S)でマクロに名前を付けて保存する

フォームのイベントにマクロを埋め込む

  1. フォームをデザインビューで開く
  2. コントロールまたはフォーム自体を選択し、プロパティシートの「イベント」タブを開く
  3. イベント(例:「クリック時」)の欄にある「…」ボタンをクリックする
  4. 「選択したビルダー」ダイアログで「マクロビルダー」を選択して「OK」を押す
  5. マクロビルダーが開き、そのイベント専用の埋め込みマクロが作成される

埋め込みマクロはフォームやレポートのオブジェクト内部に保存されるため、ナビゲーションウィンドウのマクロ一覧には表示されません。フォームを別のデータベースにインポートすると埋め込みマクロも一緒に移動する利点があります。一方、独立したマクロオブジェクトは複数のコントロールから共通利用できます。

よく使うマクロアクション一覧

アクション名機能主な用途
OpenFormフォームを開く詳細フォームを開く・データ入力フォームの起動
CloseWindowフォーム・レポートを閉じる「閉じる」ボタンへの割り当て
ApplyFilterフォームにフィルタを適用する選択条件に合わせてレコードを絞り込む
RemoveAllFiltersフィルタを解除する「すべて表示」ボタンへの割り当て
MessageBoxメッセージダイアログを表示する削除確認・完了通知・警告の表示
GoToControl指定コントロールにフォーカスを移す入力完了後に次のフィールドへカーソルを移動
GoToRecord特定のレコードに移動する先頭・末尾・前後・新しいレコードへの移動
FindRecord条件に一致するレコードを検索する検索フォームからの絞り込み
SetValueコントロールの値を設定するフォームの値を自動入力・初期値の設定
OpenReportレポートを開く・印刷する「印刷」ボタンへの割り当て・プレビュー表示
RunSQLSQLを実行するアクションクエリをマクロから実行する
StopMacroマクロの実行を終了する条件分岐でマクロを途中終了する
OnErrorエラー発生時の処理先を指定するエラー時に別のアクションへ制御を移す

主要アクションの設定手順

OpenForm(フォームを開く)

最も使用頻度の高いアクションです。「フォーム名」「ビュー」「フィルタ条件」「データモード」の4つのパラメータで動作を制御します。

パラメータ内容よく使う値
フォーム名開くフォームの名前ナビゲーションウィンドウのフォーム名と完全一致させる
ビュー開くビュー種類フォームビュー / データシートビュー / デザインビュー
フィルタ名適用するクエリ名既存のクエリ名(省略可)
Where条件式レコードを絞り込む条件例:[顧客ID]=[Forms]![顧客一覧]![顧客ID]
データモードフォームの編集可否追加のみ / 編集 / 読み取り専用
ウィンドウモードフォームの表示方法標準 / 非表示 / アイコン / ダイアログ

Where条件式に別フォームの値を参照する式を入力することで、一覧フォームで選択中のレコードに対応する詳細フォームだけを開くことができます。参照構文は [Forms]![フォーム名]![コントロール名] です。

MessageBox(メッセージダイアログを表示する)

  1. マクロビルダーで「新しいアクションの追加」から「MessageBox」を選択する
  2. 「メッセージ」欄に表示したいテキストを入力する(例:「保存しました。」)
  3. 「ビープ音」欄でビープ音の有無を選択する(はい / いいえ)
  4. 「種類」欄でアイコンを選択する(なし / 情報 / 警告! / 重要)
  5. 「タイトル」欄にダイアログのウィンドウタイトルを入力する(省略時はMicrosoft Access)

MessageBoxは「OK」ボタンのみのシンプルなダイアログです。「はい/いいえ」の選択を必要とする場合はVBAのMsgBox関数を使う必要があります。マクロで削除確認を実装したい場合は、If条件分岐と組み合わせた設計が必要です。

ApplyFilter(フィルタを適用する)

  1. 「ApplyFilter」アクションを追加する
  2. 「フィルタ名」欄:既存のクエリを使う場合はクエリ名を入力する(省略可)
  3. 「Where条件式」欄:絞り込み条件式を入力する(例:[担当者ID]=[Forms]![メニュー]![担当者ID])
  4. 「コントロール名」欄:複数値フィールドの場合のみ使用する(通常は省略)

ApplyFilterはフォームが既に開いている状態でないと動作しません。新しくフォームを開いて同時にフィルタをかけたい場合は、OpenFormのWhere条件式パラメータを使う方が適切です。

If条件分岐を使ったフロー制御

マクロビルダーの「Ifブロック」を使うと、条件によって実行するアクションを切り替えられます。Excelの条件分岐と同じ考え方で、「If~Else If~Else~End If」の構造で記述します。

Ifブロックの追加手順

  1. マクロビルダーで「新しいアクションの追加」ドロップダウンから「If」を選択する(またはリボンの「If」ボタンをクリックする)
  2. 「If」行の右側に条件式を入力する(例:[Forms]![受注フォーム]![数量] > 0)
  3. Ifブロック内に「新しいアクションの追加」が表示されるので、条件が真のときのアクションを追加する
  4. 「Else を追加」リンクをクリックして偽のときのアクションを追加する(省略可)
  5. 「Else If を追加」で条件を増やすこともできる

条件式の書き方

Ifの条件式はAccessの式構文と同じで、True(-1)を返す式を記述します。よく使う条件式の書き方を示します。

  • [Forms]![フォーム名]![コントロール名] = "" → テキストボックスが空のとき
  • IsNull([Forms]![フォーム名]![コントロール名]) → 値が未入力のとき
  • [Forms]![フォーム名]![ステータス] = "完了" → ステータスが「完了」のとき
  • MsgBox("削除してよいですか?", vbYesNo) = vbYes → VBA関数を利用した確認(埋め込みマクロでのみ推奨)

純粋なマクロでMsgBoxの戻り値を条件にするには、VBAを呼び出す必要があります。このため「削除確認ダイアログ→はい/いいえで分岐」のパターンはVBAで実装する方が現実的です。マクロだけで実現したい場合はMessageBoxで警告を表示した後、ユーザーに判断を委ねる設計にする必要があります。

実務別マクロパターン5選

パターン1:「詳細を開く」ボタンで対応レコードの詳細フォームを表示する

一覧フォームで選択中の顧客IDに対応する詳細フォームを開くボタンのマクロです。

アクションパラメータ設定
OpenFormフォーム名:顧客詳細フォーム / ビュー:フォームビュー / Where条件式:[顧客ID]=[Forms]![顧客一覧]![顧客ID]

Where条件式でリンクフィールドを指定することで、一覧で選択した行の顧客IDと一致する詳細フォームだけが表示されます。これはコマンドボタンウィザードの「フォームを開く」と同じ動作をマクロで実装したものです。

パターン2:「新規入力」ボタンで空のフォームを追加モードで開く

アクションパラメータ設定
OpenFormフォーム名:受注入力フォーム / ビュー:フォームビュー / データモード:追加のみ / ウィンドウモード:ダイアログ

「データモード:追加のみ」にすると既存レコードは読み取り専用になり、新規入力専用の画面として開けます。「ウィンドウモード:ダイアログ」にすると元のフォームが背後でロックされ、入力フォームを閉じるまで一覧フォームを操作できない状態になります。

パターン3:「絞り込み」ボタンで担当者別にレコードを絞る

アクションパラメータ設定
ApplyFilterWhere条件式:[担当者ID]=[Forms]![受注一覧]![コンボ担当者]

同一フォーム内のコンボボックスで選択した担当者IDをWhere条件式に参照することで、一覧フォームのレコードをリアルタイムに絞り込む検索フォームを実装できます。隣に「全件表示」ボタンを配置してRemoveAllFiltersアクションを割り当てると、絞り込みを解除できます。

パターン4:保存確認ダイアログと自動クローズ

順序アクションパラメータ設定
1MessageBoxメッセージ:保存しました。 / 種類:情報 / タイトル:完了
2CloseWindowオブジェクトの種類:フォーム / オブジェクト名:(省略=アクティブウィンドウ)

「保存」ボタンにこのマクロを割り当てることで、入力フォームで「保存」をクリックすると「保存しました。」のメッセージが表示され、OKを押すとフォームが閉じます。CloseWindowの「オブジェクト名」を省略するとアクティブなウィンドウを閉じます。閉じる前にレコードを保存したい場合は最初にRunCommandアクションでSaveRecordを実行します。

パターン5:起動時に必須フィールドの入力チェックを行う

順序アクションパラメータ設定
1If条件式:IsNull([Forms]![受注フォーム]![顧客ID])
2(If内)MessageBoxメッセージ:顧客IDを入力してください。 / 種類:警告!
3(If内)GoToControlコントロール名:顧客ID
4(If内)StopMacro(パラメータなし)

「保存」ボタンをクリックしたとき、必須フィールドが未入力ならば警告を表示してカーソルを未入力フィールドに戻し、マクロを終了します。If条件が真(未入力)のときのみ警告→フォーカス移動→StopMacroの流れを実行し、偽(入力済み)のときはそのまま次のアクション(保存・クローズ)へ進む構造です。

マクロのテスト実行とデバッグ方法

シングルステップ実行

マクロビルダーのリボンに「シングルステップ」ボタンがあります。これを有効にした状態でマクロを実行すると、アクションを1つ実行するたびに「マクロのシングルステップ」ダイアログが開き、アクション名・パラメータ・エラーの有無を確認できます。処理が意図通り動かない場合に原因を特定するのに役立ちます。

マクロのデバッグ時によく見るエラー

エラー・症状原因対処法
「〇〇というフォームが見つかりません」OpenFormの「フォーム名」がナビゲーションウィンドウのフォーム名と不一致スペルや全角半角を確認し、ナビゲーションウィンドウのフォーム名と完全一致させる
マクロを実行しても何も起きないイベントプロパティへのマクロ割り当てが正しくないプロパティシートの「イベント」タブを開き、対象イベントにマクロ名が入っているか確認する
「〇〇というコントロールが見つかりません」GoToControlの「コントロール名」がフォーム上のコントロール名と不一致コントロールのプロパティシートの「名前」プロパティと完全一致させる
ApplyFilterでレコードが消えるWhere条件式に誤りがあり、どのレコードも一致しない条件になっている条件式をイミディエイトウィンドウや式ビルダーで確認する
If条件が常にTrue/Falseになる参照するコントロール名が違う・フォーム名の参照構文が誤っている[Forms]![フォーム名]![コントロール名]の構文を正確に確認する

MOS Access試験でのマクロ出題ポイント

MOS Access 365試験では、マクロの作成・編集・割り当てに関する操作がスキル領域として含まれます。分野別の出題数・配点は公表されていませんが、マクロビルダーの操作手順とボタンへの割り当て方法が実践的な操作として問われます。

  • マクロビルダーの起動:「作成」タブ→「マクロ」ボタン、またはフォームのイベントプロパティから「マクロビルダー」を選択して起動できる
  • アクションの追加:ドロップダウンから目的のアクション(OpenForm・MessageBox・CloseWindowなど)を選択してパラメータを入力できる
  • OpenFormのWhere条件式:他フォームのコントロール値を参照する式([Forms]![フォーム名]![コントロール名])を正しく入力できる
  • マクロをイベントに割り当てる:コマンドボタンのプロパティシート「イベント」タブ→「クリック時」にマクロ名を設定できる
  • Ifブロックの追加:「Ifブロック」から条件式とアクションを設定して条件分岐を作成できる
  • マクロの保存と名前付け:マクロを上書き保存(Ctrl+S)で名前を付けて保存できる

MOS試験 マクロ操作チェックリスト

確認ポイント操作内容難易度
マクロビルダーを開ける「作成」タブ→「マクロ」ボタンを押せる★☆☆
アクションを追加できるドロップダウンからアクションを選択してパラメータを入力できる★☆☆
OpenFormのパラメータを設定できるフォーム名・ビュー・Where条件式を正確に入力できる★★☆
フォームのイベントにマクロを割り当てられるプロパティシートのイベントタブで「クリック時」にマクロ名を設定できる★★☆
埋め込みマクロを作成できるボタンのプロパティ→「…」→「マクロビルダー」から埋め込みマクロを作れる★★☆
Ifブロックを追加できる「If」を追加して条件式と分岐アクションを設定できる★★★
マクロを保存して名前を付けられるCtrl+Sで保存ダイアログに名前を入力できる★☆☆
シングルステップ実行できるリボンの「シングルステップ」を有効にしてアクションを1つずつ確認できる★★☆

Accessのマクロビルダーで業務処理を自動化する|OpenForm・ApplyFilter・If条件分岐・MessageBoxの設定手順とMOS試験対策 - まとめ

まとめ:マクロビルダーでノーコードのAccessフォーム自動化を実現する

本記事のポイントをまとめます。

  • マクロとは:アクションをビジュアルに並べるノーコードの自動化機能。VBAより手軽で、MOS試験でも独立した出題領域
  • 起動方法は2つ:「作成」タブから独立したマクロを作成する方法と、フォームのイベントプロパティから埋め込みマクロを作成する方法
  • 主要アクション:OpenForm(フォームを開く)・CloseWindow(閉じる)・ApplyFilter(絞り込み)・MessageBox(通知)・GoToControl(フォーカス移動)を組み合わせて業務フローを構築する
  • Ifブロックで条件分岐:IsNull・比較演算子・フォームコントロール参照の式を使ってTrue/Falseに応じたアクションを実行できる
  • MOS試験では:マクロビルダーの起動・アクション追加・パラメータ設定・イベントへの割り当て・シングルステップデバッグの操作手順を確実に把握しておく

マクロビルダーを習得することで、フォーム間のナビゲーション・入力チェック・フィルタ操作といった業務の定型作業を自動化できます。まずはパターン1(「詳細を開く」ボタン)から試してみると、OpenFormとWhere条件式の基本的な組み合わせを手を動かして理解できます。MOS試験の合格に向けても、マクロビルダーの操作を何度か繰り返し練習して操作手順を体で覚えておくことが合格への近道です。

PR

MOS Excel 365 対策テキスト&問題集

MOS試験シリーズの定番対策書。AccessのマクロやExcel・Wordを含むMicrosoft 365全科目の出題範囲を網羅した解説と模擬問題が一冊にまとまっています。マクロビルダーの操作手順を問題形式で繰り返し確認できるため、試験前の最終確認に最適です。

PR

たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】

Excelの自動化思想を体系的に解説した一冊。ボタン1つで処理を動かす発想・定型作業の手順化・繰り返し作業の仕組み化はAccessマクロ設計にも直結します。マクロのパターン設計を学ぶ前の素地として、自動化全般の考え方を整理するのに役立ちます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次