Access プログラミングの概要

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

新しいデータベースを作成するときは、通常、テーブル、フォーム、レポートなどのデータベース オブジェクトを作成することから始めます。 ある時点で、プロセスを自動化し、それらのオブジェクトを接続するためのプログラミングを追加する必要がある場合があります。 この記事では、Access のプログラミング ツールについて説明します。

この記事の内容

プログラミングとは

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

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

フォームやレポートなどのオブジェクトや、コマンド ボタンやテキスト ボックスなどのコントロールには、マクロやプロシージャをアタッチできるイベント プロパティがあります。 各イベント プロパティは、マウスのクリック、フォームの開き方、テキスト ボックス内のデータの変更など、特定のイベントに関連付けられます。 イベントは、システム イベントなどの Access の外部の要因、または他のイベントにアタッチされているマクロまたはプロシージャによってトリガーすることもできます。 多数のオブジェクトの多くのイベント プロパティに多数のマクロまたはプロシージャを追加すると、データベースが複雑になる可能性があります。 ただし、ほとんどの場合、プログラミングをほとんど使用することで、必要な結果を得ることができます。

ページの先頭へ

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

マクロ、 VBA、またはその両方を使用する決定は、主にデータベースのデプロイまたは配布を計画する方法によって異なります。 たとえば、データベースがコンピューターに格納されていて、自分だけがユーザーであり、 VBA コードを使用することに慣れている場合は、ほとんどのプログラミング タスクに VBA を使用することにします。 ただし、ファイル サーバーから他のユーザーとデータベースを共有する場合は、セキュリティ上の懸念があるため、 VBA の使用を避ける必要があります。

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

データベースをセキュリティで保護するには、マクロアクションを使用して実行できない操作に対してのみ VBA を使用できる場合はマクロを使用してください。 また、実行する前にデータベースを信頼する必要のないマクロ アクションのみを使用してください。 このようにマクロ アクションを制限すると、ユーザーは、データベースにコンピューター上のデータやその他のファイルに悪影響を与える可能性のあるプログラミングがないことを確信できます。

マクロに関する考慮事項

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

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

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

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

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

    [アクセス オプション] ダイアログ ボックスでスタートアップ フォームを指定し、そのフォームのOnOpenまたはOnLoad イベントにマクロまたはVBAコードをアタッチした場合でも、AutoExec マクロは他のマクロまたはVBA コードの前に実行されます。

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

VBA に関する考慮事項

次のいずれかの操作を行う場合は、マクロの代わりに VBA を使用します。

  • 組み込みの関数を使用するか、独自の関数を作成します。 アクセスには、利払いを計算する IPmtなど、多くの組み込み関数が含まれています。 これらの関数を使用すると、複雑な式を作成せずに計算を実行できます。 VBAを使用すると、独自の関数を作成して、式の機能を超えた計算を実行したり、複雑な式を置き換えたりすることもできます。 さらに、作成した関数を式で使用して、複数のオブジェクトに共通の操作を適用することもできます。
  • オブジェクトを作成または操作します。 ほとんどの場合、そのオブジェクトのデザイン ビューでオブジェクトを作成および変更するのが最も簡単です。 ただし、場合によっては、コード内のオブジェクトの定義を操作することもできます。 VBAを使用すると、データベース内のすべてのオブジェクトとデータベース自体を操作できます。
  • システム レベルのアクションを実行します。 マクロで RunApp アクションを実行して、Access 内から Microsoft Excel などの別のプログラムを実行できますが、Access の外部でマクロを使用して他の多くのことを行うことはできません。 VBAを使用すると、ファイルがコンピューターに存在するかどうかをチェックしたり、Automation または Dynamic Data Exchange (DDE) を使用して Excel などの他の Microsoft Windows ベースのプログラムと通信したり、Windows ダイナミック リンク ライブラリ (DLLs) の関数を呼び出したりできます。
  • レコードを一度に 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. [ クリック時 ] プロパティ ボックスで、[ ビルド ] ボタンをクリックします。

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

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

ページの先頭へ

マクロを理解する

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

Access マクロは、実行するアクションの一覧を作成してコードを作成する、簡易プログラミング言語であると見なすとわかりやすくなります。 マクロを作成するときは、各アクションをドロップダウン リストから選択し、アクションごとに必要な情報を入力します。 マクロを使用すると、 VBA モジュールでコードを記述することなく、フォーム、レポート、コントロールに機能を追加できます。 マクロは、 VBAで使用できるコマンドのサブセットを提供します。ほとんどのユーザーは、コードを記述するよりもマクロを構築する方 VBA 簡単です。

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

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

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

ページの先頭へ

VBA コードを理解する

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

VBAを使い始める簡単な方法は、最初に Access マクロをビルドしてから、それをコードVBA変換することです。 これを行う手順については、「 マクロを VBA コードに変換する」を参照してください。 この機能により、マクロで同等の操作を実行する新しい VBA モジュールが作成されます。 また、プロシージャの変更に取りかかりやすいように、Visual Basic エディターも開かれます。 Visual Basic エディターで作業している場合は、キーワードをクリックして F1 キーを押して、開発者向けヘルプへのアクセスを開始し、各キーワード (keyword)の詳細を確認できます。 その後、Access の開発者用ヘルプを参照して、目的のプログラミング タスクの実行に役立つ新しいコマンドを探すことができます。

ページの先頭へ

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

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

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

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

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

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

  3. [ フォーム マクロの変換 ] または [ レポート マクロの変換 ] ダイアログ ボックスで、生成される関数にエラー処理コードを追加するかどうかを選択します。 マクロにコメントが含まれている場合は、それらのコメントを関数に含めるかどうかを選択します。 [変換] をクリックして続行します。 フォームまたはレポートに対応するクラス モジュールが存在しない場合は、Access によって作成され、そのモジュールに対して、フォームまたはレポートに関連付けられたマクロごとにプロシージャが追加されます。 また、フォームまたはレポートのイベント プロパティも変更され、マクロではなく新しい VBA プロシージャが実行されます。

  4. VBA コードを表示および編集するには:

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

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

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

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

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

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

  3. [マクロの変換] ダイアログ ボックスで、必要なオプションを選択し、[変換] をクリックします。 Access でマクロが変換され、Visual Basic エディターが開かれます。

  4. VBA コードを表示および編集するには:

    1. Visual Basic エディターにプロジェクト エクスプローラー ウィンドウが表示されていない場合は、[表示] メニューの [プロジェクト エクスプローラー] をクリックします。
    2. 作業中のデータベース名のツリーを展開します。
    3. [ モジュール] でConverted Macro-<macro name> モジュールをダブルクリックします。 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 マクロを実行する

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

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

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

ページの先頭へ