Access マクロを使用して、フォーム、レポート、または個々のコントロールを右クリックしたときに表示されるユーザー設定のショートカット メニューを作成できます。 特定のフォームまたはレポートのリボンに表示されるカスタム メニューを作成することもできます。
マクロを使用してメニューを作成するには、次の 3 つの主要な手順を実行します。
- メニュー コマンドを含むサブマクロを含むマクロ オブジェクトを作成します。
- メニュー自体を作成する別のマクロ オブジェクトを作成します。
- メニューをコントロール、フォーム、レポート、またはデータベース全体にアタッチします。
次のセクションでは、これらの手順について詳しく説明します。
ヒント
Visual Basic for Applications (VBA) コードを使って Access でカスタムショートカット メニューを作成する方法については、「フォーム、フォーム コントロール、またはレポートのショートカット メニューを作成する」の記事を参照してください。
手順 1: メニュー コマンドを含むサブマクロを含むマクロ オブジェクトを作成する
この手順では、サブマクロを含むマクロ オブジェクトを作成します。サブマクロの各サブマクロはショートカット メニュー上の個別のコマンドになります。
サブマクロとは
マクロ オブジェクト内でサブマクロを使用して、一連のマクロ操作を定義できます。 マクロ オブジェクト内のサブマクロは、さまざまなコントロール イベントやオブジェクト イベントとは別に呼び出すことができます。 マクロ オブジェクト内の個々のサブマクロはそれぞれ一意の名前を持ち、1 つまたは複数のマクロ操作を含めることができます。
作成タブのマクロとコードグループで、マクロをクリックします。
カスタム ショートカット メニューに表示するコマンドごとに、次の手順を実行します。
サブマクロ マクロ ステートメントをマクロ デザイン ウィンドウに追加し、ショートカット メニューに表示するサブマクロに名前を付けます (たとえば、"印刷" や "更新")。
ヒント
キーボードを使用してコマンドを選択できるようにアクセス キーを作成するには、コマンド名のアクセス キーにする文字の前にアンパサンド (&) を入力します (例: "&Refresh")。 この文字はメニューに下線が引かれます。
サブマクロ内で、ショートカット メニューのコマンドをクリックしたときに実行する最初の操作を選択します。
このコマンドを選択するときにさらに実行するアクションがある場合は、同じサブマクロ内の個別のマクロ アクションとして追加します。
マクロ オブジェクトを保存して名前を付けます (例: mcrShortcutMenuCommands)。
次の図は、カスタム メニューまたはショートカット メニュー用の 3 つのサブマクロを持つマクロ オブジェクトの例を示しています。
手順 2: メニューを作成する 2 番目のマクロ オブジェクトを作成する
この手順は冗長に思えるかもしれませんが、手順 1 で作成したマクロ オブジェクトからショートカット メニューを作成するには、 AddMenu マクロ アクションを含む 2 番目のマクロ オブジェクトを作成する必要があります。 このマクロ操作は、"メニュー マクロ" と呼ばれることもあります。
- 作成タブのマクロとコードグループで、マクロをクリックします。
- マクロ デザイン ウィンドウの [ 新しいアクションの追加 ] コンボ ボックスで、[ AddMenu] を選択します。
- AddMenu マクロ アクションの [メニュー名] 引数ボックスに、メニューの名前 (たとえば、"フォーム コマンド") を入力します。 この引数は必須ではありませんが、手順 3 でメニューをリボン タブ (フォームやレポートの [アドイン ] タブなど) に追加する場合は推奨されます。 手順 3 でメニューがショートカット メニューとして追加された場合、 メニュー名 引数は無視されます。
- [メニュー] の [マクロ名 ] 引数ボックスに、手順 1 で作成したマクロ オブジェクトの名前を入力します。
- この 2 番目のマクロ オブジェクトを保存して名前を付けます ( 例: mcrAddShortcutMenu)。
次の図は、手順 1 でデザインしたメニューを作成するメニュー マクロ オブジェクトの例を示しています。
手順 3: コントロール、フォーム、レポート、またはデータベースにメニューをアタッチする
メニューを表示する場所に応じて、次の手順の 1 つ以上を使用します。
フォームまたはレポートの [Add-Ins] タブにメニューを追加する
この手順は、特定のフォームまたはレポートの [アドイン ] タブにメニューを表示する場合に使います。
- ナビゲーション ウィンドウで、メニューを表示するフォームまたはレポートを右クリックし、[ デザイン ビュー] をクリックします。
- [デザイン] タブの [ツール] で [プロパティ シート] をクリックします。
- [プロパティ シート] 作業ウィンドウの上部にある一覧から [フォーム] または [ レポート ] を選択して、オブジェクト全体を選択します。
- プロパティ シートの [その他 ] タブの メニュー バー プロパティ ボックスに、手順 2 で作成したマクロ オブジェクト (この例では "mcrAddShortcutMenu") の名前を入力します。
- フォームを保存するか、変更を報告します。
次にフォームまたはレポートを開くと、リボンに [アドイン] タブが表示されます。 次の図に示すように、タブをクリックするとメニューが表示されます。
カスタム タブの追加や既定のタブの非表示など、リボンのカスタマイズ手法の詳細については、「 Access でカスタム リボンを作成する」の記事を参照してください。
フォーム、レポート、またはコントロールのショートカット メニューとしてメニューを追加する
特定のフォーム、レポート、またはコントロールを右クリックしたときにメニューを表示する場合は、この手順を使用します。
- ナビゲーション ウィンドウで、ショートカット メニューを表示するフォームまたはレポートを右クリックし、[ デザイン ビュー] をクリックします。
- [デザイン] タブの [ツール] で [プロパティ シート] をクリックします。
- ショートカット メニューを関連付けるコントロールまたはオブジェクトを選択します。
オブジェクト全体を選択するには、[プロパティ シート] 作業ウィンドウの上部にある一覧から [フォーム] または [ レポート ] を選択します。 - プロパティ シートの [その他 ] タブの [ ショートカット メニュー バー ] プロパティ ボックスに、手順 2 で作成したマクロ オブジェクト (この例では "mcrAddShortcutMenu") の名前を入力します。
- ショートカット メニュー プロパティが [はい] に設定されていることを確認します。
- フォームを保存するか、変更を報告します。
次にフォームまたはレポートを開いてフォーム、レポート、またはコントロールを右クリックすると、次の図に示すように、関連付けられたコマンドを含むショートカット メニューが表示されます。
メニューをグローバル ショートカット メニューとして追加する
この手順を実行すると、現在のデータベースの既定のショートカット メニューがすべて置き換えられます。 特定のフォーム、レポート、またはコントロールにアタッチしたカスタム ショートカット メニューは影響を受けません。
- [ファイル>オプション] をクリックします。
- [Access のオプション] ダイアログ ボックスで [カレント データベース] をクリックします。
- [ リボンとツールバーのオプション] の [ ショートカット メニュー バー ] ボックスに、手順 2 で作成したマクロの名前 (この例では "mcrAddShortcutMenu") を入力します。
- [ OK ] をクリックして、[ Access オプション] ダイアログ ボックスの変更を保存します。
- 変更を有効にするには、データベースを閉じてからもう一度開きます。
カスタム ショートカット メニューは、アタッチされているオブジェクトの既定のショートカット メニューを置き換えます。 これらのメニューで使用する特定の Access コマンドを保持する場合は、 RunCommand マクロ アクションを使用して、それらのコマンドを挿入するメニューのマクロ オブジェクトにコマンドを配置します。
コントロールにアタッチされているカスタム ショートカット メニューは、データベースで定義されている他のカスタム ショートカット メニューよりも優先されます。 フォームまたはレポートに添付されているカスタム ショートカット メニューは、カスタム グローバル ショートカット メニューに置き換わります。
フォームやレポート、またはデータベースにメニュー マクロを指定すると、フォーム、レポート、またはデータベースが開かれるたびに、このメニュー マクロが実行されます。 フォーム、レポート、またはデータベースが開いている間にメニュー マクロ オブジェクトまたはそのコマンドを定義するマクロ オブジェクトを変更する場合は、フォーム、レポート、またはデータベースを閉じてから再度開き、変更を確認する必要があります。
コマンドのショートカット メニュー リストにサブメニューを作成するには、次の図に示すように、手順 1 に従って、サブメニュー コマンドのみを含む別のマクロ オブジェクトを作成します。
次に、もう一度手順 1 に従って、上位レベルのメニュー オブジェクトのコマンドを定義します。 AddMenu マクロ アクションを使用して、サブメニューを上位レベルのマクロ オブジェクトに項目として追加します。 次の図は、サブメニューを含むメニューのマクロ オブジェクトを示しています。 このマクロ オブジェクト例の 3 番目のサブマクロは、[ エクスポート先... サブメニュー (mcrShortcutSubMenuCommands)] を作成します。
次の図は、完成したショートカット メニューとサブメニューを示しています。
メニューの各レベルのマクロ オブジェクトで AddMenu マクロ アクションを使用して、複数レベルのサブメニューを作成できます。 各 AddMenu アクションには必ず Menu Name 引数の値を指定してください。そうしないと、上位レベルのメニューでサブメニューが空白行として表示されます。
If/Then/Else ブロックを使用するマクロ式条件は、トップレベル メニューのマクロ オブジェクトでのみサポートされます。 つまり、メニュー マクロ オブジェクトで条件式を使用して、特定のメニューまたはショートカット メニューを表示するかどうかを決定できますが、これは最上位レベルのメニューに対してのみ表示できます。 条件式を使用して、メニューのコマンドやサブメニューを表示または非表示にすることはできません。 条件式を使用して、カスタム ショートカット メニューまたはグローバル ショートカット メニューを非表示または表示することもできます。
オプションで、手順 2 で作成するメニュー マクロをマクロ オブジェクトの一部にすることができます。 たとえば、複数のオブジェクトまたはコントロールに対して複数のショートカット メニューがある場合は、必要なすべてのメニュー マクロを含む 1 つのマクロ オブジェクトを作成できます。 各サブマクロに一意の名前をつけるようにしてください。 手順 3 で、マクロを参照するために次の表記を使用します。MacroObjectName.SubmacroName。 たとえば、 mcrAddShortcutMenus.AddMenu2 です。