Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

新しいデータベースを作成する場合、通常、テーブル、フォーム、レポートなどの複数のデータベース オブジェクトを作成することから始めます。 最終的には、特定のプロセスを自動化したり、複数のデータベース オブジェクトを結びつけたりするために、プログラミングを追加する必要がある状況になります。 この記事では、 Accessのプログラミング ツールに向けて説明します。

この記事の内容

プログラミングとは

Accessでは、プログラミングは、マクロまたは Visual Basic for Applications (VBA) コード Access を使用して、データベースに機能を追加するプロセスです。 たとえば、フォームとレポートを作成し、そのフォームをクリックするとレポートを開くコマンド ボタンを追加するとします。 この場合のプログラミングとは、マクロまたは VBA プロシージャを作成し、コマンド ボタンをクリックするとそのマクロまたはプロシージャが実行されるように、コマンド ボタンの "OnClick/クリック時" イベント プロパティを設定するプロセスになります。 レポートを開くなどの簡単な操作については、コマンド ボタン ウィザードを使用してすべての作業を行うことができますが、ウィザードを無効にして自分でプログラミングすることもできます。

注: 多くの Microsoft Office プログラムでは、"マクロ" という用語は VBA コードを指すために使用されます。 Accessでは、マクロ ビルダーを使用して組み立てることができるマクロ アクションの名前付きコレクションを参照するため、ユーザーを Access すると混乱する可能性があります。 Access マクロ アクションは、VBA で使用できるコマンドのサブセットのみを表します。 マクロ ビルダーには Visual Basic エディターよりも構造化されたインターフェイスが用意されており、VBA コードを習得しなくてもコントロールおよびオブジェクトにプログラムを追加できます。 Access ヘルプ記事では、マクロ Access マクロと呼ばれることを覚えておいてください。 これに対して VBA コードは、VBA、コード、関数、プロシージャのいずれかの名称で呼ばれます。 VBA コードは、クラス モジュール (個々のフォームまたはレポートの一部で、通常、それらのオブジェクト専用のコードを含む) およびモジュール (特定のオブジェクトに関連付けられているのではなく、通常、データベース全体で使用できる "グローバル" なコードを含む) に含まれます。

オブジェクト (フォームやレポートなど) およびコントロール (コマンド ボタンやテキスト ボックスなど) には、さまざまなイベント プロパティがあり、それらのイベント プロパティにマクロまたはプロシージャを割り当てることができます。 各イベント プロパティは、マウスをクリックする、フォームを開く、テキスト ボックス内のデータを変更するなどの特定のイベントに関連付けられています。 イベントは、システム イベントなどの Access外の要因、または他のイベントにアタッチされているマクロまたはプロシージャによってトリガーすることもできます。 多くのオブジェクトの複数のイベント プロパティに大量のマクロやプロシージャを追加すると、データベースが複雑になることがありますが、ほとんどの場合は、ごくわずかなプログラミングで期待どおりの結果が得られます。

ページの先頭へ

マクロを使用する場合と VBA コードを使用する場合

マクロ、VBA、またはその両方を使用するかは、主にデータベースの展開または配布をどのように計画するかによって決まります。 たとえば、データベースが自分のコンピューターに格納されていて、お客様が単独で使用している場合、または VBA コードの使用に慣れている場合は、ほとんどのプログラミング タスクを実行するために、VBA を使用することに決定する可能性があります。 ただし、ファイル サーバーでデータベースを検索して、他のユーザーとデータベースを共有しようとする場合、セキュリティ上の理由で VBA の使用を避ける必要がある場合があります。

マクロと VBA コードのどちらを使用するかは、セキュリティと必要な機能という 2 つの考慮事項に基づいて決定する必要があります。 VBA では、データのセキュリティを危険にさらすコードやコンピューターのファイルに損傷を与えるコードも作成できるため、セキュリティが重要な問題になります。 他のユーザーが作成したデータベースを使用するときは、信頼できる作成元のデータベースだとわかっている場合にのみ、VBA コードを有効にする必要があります。 他のユーザーが使用するデータベースを作成するときは、ユーザーが明示的にデータベースを信頼する必要があるようなプログラミング ツールを含めないようにしてください。 ユーザーがデータベースを信頼する必要を回避する一般的な技法については、このセクションの後半で説明します。

データベースのセキュリティを確保するには、可能な限りマクロを使用し、マクロ アクションでは実行できない操作にのみ VBA プログラミングを使用します。 さらに、データベースを信頼しなくても実行できるマクロ アクションのみを使用するようにする必要があります。 このようにマクロ アクションの使用を制限すると、コンピューター上のデータや他のファイルに損害を与えるプログラミングがデータベースに含まれていないことをユーザーが確認できます。

マクロに関する考慮事項

Access には、以前のバージョンの Accessを使用してビルドできるよりも強力なマクロを構築できる新しいマクロ アクションが多数含まれています。 たとえば、マクロ アクションを使用してグローバルな一時変数を作成および使用したり、新しいエラー処理マクロ アクションを使用して正しくエラーを処理したりできます。 以前のバージョンの Accessでは、これらの種類の機能は VBA を使用してのみ使用できます。 さらに、オブジェクトやコントロールのイベント プロパティに直接マクロを埋め込むことができます。 埋め込みマクロはオブジェクトまたはコントロールの一部となり、そのオブジェクトやコントロールを移動またはコピーしても保持されます。

マクロを使用すると、フォームの開閉、レポートの実行などの多くのプログラミング タスクの処理が簡単になります。 構文を覚える必要がほとんどないので、作成したデータベース オブジェクト (フォーム、レポートなど) をすばやく簡単に結びつけることができます。 各アクションの引数は、マクロ ビルダー内に表示されます。

マクロによって実現するセキュリティ強化や使いやすさ以外にも、次のようなタスクを実行するマクロを使用する必要があります。

  • 1 つまたは一連のアクションをキーに割り当てる場合。 このためには、AutoKeys という名前のマクロ グループを作成する必要があります。

  • データベースが最初に開かれるときに、1 つまたは一連のアクションを実行する場合。 このためには、AutoExec という名前のマクロ グループを作成する必要があります。

    注:  AutoExec マクロは、他のマクロや VBA コードよりも先に実行されます。[Access のオプション] ダイアログ ボックスでスタートアップ フォームを指定し、そのフォームの "OnOpen/開く時" イベントまたは "OnLoad/読み込み時" イベントにマクロまたは VBA コードを割り当てていても、AutoExec マクロの方が先に実行されます。

マクロの作成方法の詳細については、「マクロを理解する」を参照してください。

VBA に関する考慮事項

次のいずれかを実行する場合は、マクロの代わりに VBA プログラミングを使用する必要があります。

  • 組み込み関数を使用するか、    利払いを計算する IPmt 関数など、多数の組み込み関数を含Access 独自の関数を作成します。 これらの組み込み関数を使用すると、複雑な式を作成することなく計算を実行できます。 VBA コードを使用すると、独自の関数を作成して、式の機能を超える計算を実行したり、複雑な式を置き換えたりすることも可能です。 さらに、作成した関数を式で使用して、複数のオブジェクトに共通の操作を適用することもできます。

  • オブジェクトを作成または操作する場合    ほとんどの場合、オブジェクトの作成や変更は、そのオブジェクトのデザイン ビューで実行するのが最も簡単です。 ただし、状況によっては、オブジェクトの定義をコードで操作する必要があることがあります。 VBA を使用すると、データベース自体に加え、データベース内のすべてのオブジェクトを操作できます。

  • システム レベルのアクションを実行する場合    マクロで RunApp アクションを実行して、 Access内から別のプログラム (Microsoft Excel など) を実行できますが、マクロを使用して、 Access以外の多くのことを実行することはできません。 VBA を使用すると、コンピューターにファイルが存在するかどうかを確認したり、オートメーションまたは動的データ交換 (DDE) を使用して Excel などの他の Microsoft Windows ベースのプログラムと通信したり、Windows のダイナミック リンク ライブラリ (DLL) 内の関数を呼び出したりすることができます。

  • レコードを 1 つずつ操作する場合    VBA を使用すると、一連のレコードを 1 つずつ順番に参照し、レコードごとに操作を実行することができます。 これに対して、マクロでは一連のレコード全体が同時に操作されます。

ページの先頭へ

コマンド ボタン ウィザードを使用して共通のプログラミング タスクを実行する

フォームにコマンド ボタンを追加する場合は、コマンド ボタン ウィザードを使用してプログラミングを開始すると便利です。 ウィザードは、特定のタスクを実行するコマンド ボタンを作成するのに役立ちます。 Access (.accdb) ファイルでは、コマンド ボタンの OnClick プロパティに埋め込まれたマクロがウィザードによって作成されます。 .mdb ファイルや .adp ファイルの場合は、これらのファイル形式では埋め込みマクロを使用できないため、ウィザードでは VBA コードが作成されます。 どちらの場合も、より目的に合うように、マクロや VBA コードを変更または拡張することができます。

  1. ナビゲーション ウィンドウで、コマンド ボタンを追加するフォームを右クリックし、[デザイン ビュー] をクリックします。

  2. [ フォーム デザイン ] タブで、下矢印をクリックして コントロール ギャラリーを表示し、[ コントロール ウィザードの使用 ] が選択されていることを確認します。

  3. [ フォーム デザイン ] タブの [コントロール ] ギャラリーで、[ボタン] をクリック します

  4. フォーム デザイン グリッドで、コマンド ボタンを配置する場所をクリックします。

    コマンド ボタン ウィザードが開始されます。

  5. ウィザードの最初のページで、[カテゴリ] の一覧の各カテゴリをクリックし、ウィザードでコマンド ボタンから実行するようにプログラムで設定できるアクションを確認します。 [アクション] の一覧で目的のアクションを選択し、[次へ] をクリックします。

  6. コマンド ボタンに文字列とピクチャのどちらを表示するかに応じて、[文字列] または [ピクチャ] をクリックします。

    • 文字列を表示する場合は、[文字列] の横のボックスで文字列を編集できます。

    • ピクチャを表示する場合は、ウィザードによってピクチャの候補がリスト ボックスに表示されます。 別の画像を選択する場合は、[ すべての画像を表示 ] チェック ボックスをオンにして、 Access が提供するすべてのコマンド ボタンの画像の一覧を表示するか、[ 参照 ] をクリックして他の場所に保存されている画像を選択します。

      [次へ] をクリックします。

  7. コマンド ボタンに付けるわかりやすい名前を入力します。 この手順はオプションで、この名前はコマンド ボタンには表示されません。 ただし、後でコマンド ボタンを参照する必要が生じたとき (フォーム上のコントロールのタブ オーダーを設定する場合など)、目的のコマンド ボタンを簡単に識別できるように、わかりやすい名前を入力することをお勧めします。 たとえば、フォームを閉じるコマンド ボタンには、cmdClose または CommandClose という名前を付けます。

  8. [完了] をクリックします。

    Access フォームにコマンド ボタンを配置します。

  9. ウィザードによって "プログラミングされた" 結果を確認するには、必要に応じて次の手順を実行します。

    1. プロパティ シートが表示されていない場合は、F4 キーを押して表示します。

    2. プロパティ シートの [イベント] タブをクリックします。

    3. [On Click]\(クリック時\) プロパティ ボックスで、[ビルド] ボタンをクリック ボタン イメージ

      Access マクロ ビルダーを起動し、ウィザードによって作成されたマクロが表示されます。 必要に応じて、マクロを編集できます (マクロの編集方法の詳細については、「マクロを理解する」セクションを参照してください)。 完了したら、[ マクロ デザイン ] タブの [ 閉じる ] グループで [ 閉じる ] をクリックしてマクロ ビルダーを閉じます。 変更 Access 保存してプロパティを更新するように求められた場合は、[ はい ] をクリックして変更を保存するか 、[いいえ] をクリックして変更を拒否します。

  10. [ フォーム デザイン ] タブの [ ビュー ] グループで、[ 表示] をクリックし、[ フォーム ビュー] をクリックします。 新しいコマンド ボタンをクリックして、期待どおりに動作することを確認します。

ページの先頭へ

マクロを理解する

マクロとは、タスクを自動化したり、フォーム、レポート、およびコントロールに機能を追加したりできるようにするツールです。 たとえば、フォームにコマンド ボタンを追加する場合、ボタンがクリックされるたびに実行するコマンドをマクロに含め、そのマクロをボタンの "OnClick/クリック時" イベント プロパティに関連付けます。

マクロ Access 、実行するアクションの一覧を作成してコードを作成する簡略化されたプログラミング言語と考えると便利です。 マクロを作成するときは、各アクションをドロップダウン リストから選択し、アクションごとに必要な情報を入力します。 マクロを使用すると、VBA モジュールにコードを記述することなく、フォーム、レポート、およびコントロールに機能を追加できます。 マクロでは VBA で使用できるコマンドのサブセットが用意されており、マクロを作成する方が VBA コードを記述するより簡単だと感じるユーザーがほとんどです。

マクロは、次の図に示すマクロ ビルダーを使用して作成します。

Access 2010 マクロ ビルダー

マクロ ビルダーを表示するには

  • [作成] タブの [マクロとコード] グループで [マクロ] をクリックします。

ページの先頭へ

VBA コードを理解する

マクロと同様に、VBA を使用すると、 Access アプリケーションにオートメーションやその他の機能を追加できます。 サードパーティのコントロールを使用して VBA を拡張したり、特定の目的に合わせて独自の関数やプロシージャを記述したりすることができます。

VBA プログラミングを簡単に開始するには、最初に Access マクロをビルドしてから VBA コードに変換します。 この操作を行う手順については、「マクロを VBA コードに変換する」セクションに記載されています。 この機能では、マクロと同等の操作を実行する、新しい VBA モジュールが作成されます。 また、プロシージャの変更に取りかかりやすいように、Visual Basic エディターも開かれます。 Visual Basic エディターで作業している場合は、キーワードをクリックして F1 キーを押して開発者ヘルプ Access 開始し、各キーワードの詳細を確認できます。 その後、開発者ヘルプ Access 調べて、必要なプログラミング タスクを実行するのに役立つ新しいコマンドを検出できます。

ページの先頭へ

マクロを VBA コードに変換する

Access を使用すると、マクロを VBA モジュールまたはクラス モジュールに自動的に変換できます。 フォームまたはレポートに割り当てられているマクロは、個別のオブジェクトとして存在するマクロでも、埋め込みマクロでも変換できます。 特定のフォームやレポートには割り当てられていないグローバル マクロを変換することもできます。

フォームまたはレポートに割り当てられているマクロを変換する

このプロセスでは、フォームやレポート (またはその上に配置されたコントロール) によって参照される (またはそこに埋め込まれている) 任意のマクロが VBA に変換され、その VBA コードがフォームまたはレポートのクラス モジュールに追加されます。 クラス モジュールはフォームまたはレポートの一部となり、そのフォームやレポートを移動またはコピーすると一緒に移動します。

  1. ナビゲーション ウィンドウで、フォームまたはレポートを右クリックし、[デザイン ビュー] をクリックします。

  2. [ フォーム デザイン ] タブの [ ツール ] グループで、[ フォームのマクロを Visual Basic に変換 ] または [ レポートのマクロを Visual Basic に変換] をクリックします。

  3. [ フォーム マクロの変換 ] または [ レポート マクロの変換 ] ダイアログ ボックスで、生成する関数にエラー処理コードを追加 Access するかどうかを選択します。 また、マクロ内にコメントがある場合は、それらをコメントとして関数内に含めるかどうかも選択します。 [変換] をクリックして続行します。

    フォームまたはレポートのクラス モジュールが存在しない場合、 Access は 1 つを作成し、フォームまたはレポートに関連付けられた各マクロのプロシージャをモジュールに追加します。 Access フォームまたはレポートのイベント プロパティも変更され、マクロの代わりに新しい VBA プロシージャが実行されます。

  4. VBA コードを表示して編集するには

    1. フォームまたはレポートをデザイン ビューで開いた状態で、プロパティ シートがまだ表示されていない場合は、F4 キーを押して表示します。

    2. プロパティ シートの [ イベント ] タブで、[ イベント プロシージャ] を表示する任意のプロパティ ボックスをクリックし、[ビルド] ボタンをクリック ボタン イメージ。 特定のコントロールのイベント プロパティを表示するには、そのコントロールをクリックして選択します。 フォームまたはレポート全体のイベント プロパティを表示するには、プロパティ シートの上部にあるドロップダウン リストで [フォーム] または [レポート] をクリックします。

      Access Visual Basic エディターを開き、そのクラス モジュールにイベント プロシージャを表示します。 上下にスクロールすると、同じクラス モジュール内の他のプロシージャを表示できます。

グローバル マクロを変換する

  1. ナビゲーション ウィンドウで、変換するマクロを右クリックして、[デザイン ビュー] をクリックします。

  2. [ マクロ デザイン ] タブの [ ツール ] グループで、[ マクロを Visual Basic に変換] をクリックします。

  3. [マクロの変換] ダイアログ ボックスで、必要なオプションを選択し、[変換] をクリックします。

    Access マクロを変換し、Visual Basic エディターを開きます。

  4. VBA コードを表示して編集するには

    1. Visual Basic エディターにプロジェクト エクスプローラー ウィンドウが表示されていない場合は、[表示] メニューの [プロジェクト エクスプローラー] をクリックします。

    2. 作業中のデータベース名のツリーを展開します。

    3. [モジュール] の下のモジュール [変換するマクロ: <マクロ名>] をダブルクリックします。

      Visual Basic エディターでモジュールが開かれます。

VBA 関数をイベント プロパティに割り当てる

グローバル マクロを VBA に変換すると、その VBA コードは標準モジュール内に配置されます。 クラス モジュールと異なり、標準モジュールはフォームやレポートの一部にはなりません。 通常は、フォーム、レポート、またはコントロールのイベント プロパティに関数を関連付けて、的確なタイミングと場所でコードが実行されるようにします。 この操作を行うには、VBA コードをクラス モジュールにコピーし、それをイベント プロパティに関連付けるか、次のプロシージャを使用して、イベント プロパティから標準モジュールへの特殊な呼び出しを作成することができます。

  1. Visual Basic エディターを確認して関数名を覚えておきます。 たとえば、MyMacro という名前のマクロを変換した場合、関数名は MyMacro() になります。

  2. Visual Basic エディターを閉じます。

  3. ナビゲーション ウィンドウで、関数を関連付けるフォームまたはレポートを右クリックし、[デザイン ビュー] をクリックします。

  4. 関数を関連付けるコントロールまたはセクションをクリックします。

  5. プロパティ シートが表示されていない場合は、F4 キーを押して表示します。

  6. プロパティ シートの [イベント] タブで、関数を関連付けるイベント プロパティ ボックスをクリックします。

  7. プロパティ ボックスに、等号 (=) を入力し、その後に関数の名前 ( =MyMacro()など) を入力します。 かっこは必ず含めます。

  8. クイック アクセス ツール バーの [保存] をクリックして、フォームまたはレポートを保存します。

  9. ナビゲーション ウィンドウでフォームまたはレポートをダブルクリックし、コードが正しく動作するかどうかをテストして確認します。

これで、データベースに VBA コードを追加する基本的な手順の学習は終わりです。 この記事では、作業を始めるための基本を説明しただけですが、プログラミング スキルの向上に役立つ参考書やオンライン リソースは豊富にあります。

関連項目

ユーザー インターフェイス (UI) マクロを作成する

キーボード ショートカットを使用して Access マクロを実行する

起動イベントをマクロで自動化する

データベースを開いたときに実行されるマクロを作成する

データベース オブジェクトのイベントの順序

ページの先頭へ

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。