Access プログラミングの概要

通常、新しいデータベースを作成する場合は、最初にテーブル、フォーム、レポートなどのデータベース オブジェクトをいくつか作成します。次に特定の処理を自動化したり、複数のデータベース オブジェクトを相互に関連付けるためのプログラミングが必要になります。ここでは、Access 2010 のプログラミング ツールを紹介します。

注: Web データベースに Visual Basic for Applications (VBA) コードを追加できますが、Web ブラウザーでデータベースを実行している間はそのコードを実行できません。Web データベースに VBA コードが含まれている場合、コードを実行するには、まず Access を使用して Web データベースを開いておく必要があります。Web データベースでプログラミング タスクを実行するには、Access マクロを使用します。

Web データベースの詳細については、「Web で共有するデータベースを作成する」を参照してください。

この記事の内容

プログラミングとは

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

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

マクロを理解する

VBA コードを理解する

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

ヘルプ システムの使用方法を学習する

プログラミングとは

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

注: 多くの Microsoft Office プログラムでは、"マクロ" という用語は VBA コードを指します。しかし、Access での "マクロ" は、マクロ ビルダーで作成するマクロ アクションの名前付きコレクションを指します。紛らわしいのですが、Access のマクロ アクションとは、VBA で使用できるコマンドのサブセットのみを表します。マクロ ビルダーには Visual Basic Editor よりも構造化されたインターフェイスが用意されていて、VBA コードを習得しなくてもコントロールやオブジェクトにプログラムを追加できます。Access のヘルプでは、Access マクロがマクロと呼ばれ、VBA コードは VBA、コード、関数、またはプロシージャと呼ばれます。VBA コードはクラス モジュール (個々のフォームやレポートの一部で、各オブジェクト専用のコードを主に含む) やモジュール (特定のオブジェクト専用ではなく、データベース全体用の "グローバル" なコードを主に含む) に含まれます。

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

ページの先頭へ

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

マクロと VBA の一方または両方を使用するかは、主にデータベースを展開または配布する方法によって決まります。たとえば、使用中のコンピューター上にデータベースがあり、他のユーザーと共有しない場合は、VBA を使用して大部分のプログラミング タスクを実行できます。一方、ファイル サーバー上にデータベースがあり、他のユーザーと共有する場合は、セキュリティを考慮して VBA の使用は避けることをお勧めします。Access Web Application としてデータベースを発行する場合は、VBA に Web 発行機能との互換性がないため、VBA の代わりにマクロを使用してプログラミング タスクを実行する必要があります。

Access Web Applications    Access Web Application は Access 2010 の新機能で、この機能を使用すると、Access Services を実行している Microsoft SharePoint サーバーにアプリケーションを発行できます。これにより、他のユーザーは各自のコンピューターに Access をインストールしなくても、標準のインターネット ブラウザーを介してデータベースを使用できます。ただし、VBA コードは Web 発行機能と互換性がないため、Access Web Applications として発行する場合は、マクロのみを使用してプログラミング タスクを実行する必要があります。

新しい Access Web Applications を設計する場合は、Access を起動するときに [空の Web データベース] をクリックして作業を始めます。これにより、使用できる機能がデータベースの作成に関する機能に制限され、Web アプリケーションを正常に発行できるようになります。

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

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

マクロに関する注意事項

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

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

マクロは、セキュリティの強化や操作性の向上に使用するだけでなく、次のタスクを実行する場合にも使用します。

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

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

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

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

VBA に関する注意事項

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

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

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

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

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

ページの先頭へ

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

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

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

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

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

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

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

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

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

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

    • ピクチャを表示する場合は、ウィザードによってピクチャが 1 つ自動的に選択され、リスト ボックスに表示されます。別のピクチャを選択するには、[すべてのピクチャを表示する] チェック ボックスをオンにして Access に用意されているすべてのコマンド ボタン ピクチャの一覧を表示するか、[参照] をクリックして別の場所に格納されているピクチャを選択します。

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

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

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

    コマンド ボタンがフォームに配置されます。

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

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

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

    3. [クリック時] ボックスで、 ボタンの画像 (ビルド) をクリックします。

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

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

ページの先頭へ

マクロを理解する

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

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

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

Access 2010 マクロ ビルダー

マクロ ビルダーを表示するには、次の操作を行います。

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

ページの先頭へ

VBA コードを理解する

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

注: Web データベースに Visual Basic for Applications (VBA) コードを追加できますが、Web ブラウザーでデータベースを実行している間はそのコードを実行できません。Web データベースに VBA コードが含まれている場合、コードを実行するには、まず Access を使用して Web データベースを開いておく必要があります。Web データベースでプログラミング タスクを実行するには、Access マクロを使用します。

Web データベースの詳細については、「Web で共有するデータベースを作成する」を参照してください。

VBA プログラミングを簡単に開始するには、まず Access マクロを作成し、そのマクロを VBA コードに変換します。手順については、「マクロを VBA コードに変換する」で説明しています。これにより、マクロと同等の操作を実行する新しい VBA モジュールが作成されます。また、Visual Basic Editor が開き、プロシージャを変更できるようになります。Visual Basic Editor では、キーワードをクリックして F1 キーを押すと、Access の開発者用ヘルプが起動され、各キーワードの詳細を確認できます。このヘルプを参照して、目的のプログラミング タスクの実行に役立つ新しいコマンドを探すことができます。

ページの先頭へ

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

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

注: Web データベースに Visual Basic for Applications (VBA) コードを追加できますが、Web ブラウザーでデータベースを実行している間はそのコードを実行できません。Web データベースに VBA コードが含まれている場合、コードを実行するには、まず Access を使用して Web データベースを開いておく必要があります。Web データベースでプログラミング タスクを実行するには、Access マクロを使用します。

Web データベースの詳細については、「Web で共有するデータベースを作成する」を参照してください。

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

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

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

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

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

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

  4. VBA コードを表示して編集するには、次の操作を行います。

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

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

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

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

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

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

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

    Access によってマクロが変換され、Visual Basic Editor が開かれます。

  4. VBA コードを表示して編集するには、次の操作を行います。

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

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

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

      Visual Basic Editor でモジュールが開かれます。

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

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

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

  2. Visual Basic Editor を閉じます。

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

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

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

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

  7. そのプロパティ ボックスに、等号 (=) の後に続けて関数名を入力します。たとえば、「=MyMacro()」と入力します。関数名の最後のかっこを忘れないでください。

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

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

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

ページの先頭へ

ヘルプ システムの使用方法を学習する

Access 2010 には、プログラミングを支援する豊富な手段が用意されています。Access ウィンドウの右上隅にある [ヘルプ] ボタンをクリックすると、いつでもヘルプを表示できます。

[ヘルプ] ボタン

ヘルプ ウィンドウが表示されます。

また、マクロや VBA プロシージャの作成中に、マクロ アクション、キーワード、または組み込み関数の名前をクリックし、F1 キーを押すこともできます。ほとんどの場合、クリックしたアイテムに対するヘルプ トピックが表示されます。

ヘルプ ウィンドウが開いたら、ツールバーのナビゲーション ボタンを使用してページ間を移動します。

ヘルプ ビューアー ツール バー

たとえば、[ホーム] をクリックして目次を表示し、次に [戻る]、[進む]、[中止]、または [更新] をクリックして、トピック間を移動したり、トピックの再読み込みを実行したりできます。ツールバーの下のボックスに検索語を入力し、Enter キーを押すか [検索] をクリックすることにより、ヘルプ システム内で特定の情報を検索することもできます。

プログラミングに関する情報を検索するときは、通常、Access のヘルプだけでなく Access の開発者用ヘルプも参照すると役に立ちます。

Access の開発者用ヘルプに切り替える

  1. [検索] の横にあるドロップダウン矢印をクリックします。

    ヘルプの [検索] ボタン

    参照できるヘルプの一覧がヘルプ ウィンドウに表示されます。

    ヘルプ検索リスト

  2. インターネットに接続している場合は、[Office.com のコンテンツ] の下の [開発者用リファレンス] をクリックします。Office.com のコンテンツは常に最新であるため、この方法を使用することをお勧めします。インターネットに接続していない場合、またはヘルプ ウィンドウからオンラインに移動する機能がシステム管理者によって無効にされている場合でも、[このコンピューター上のコンテンツ] の下の [開発者用リファレンス] をクリックすることにより、Access の開発者用ヘルプを表示できます。

  3. 目次のリンクを使用するか、ツールバーのすぐ下のボックスに検索語を入力して Enter キーを押すことにより、ヘルプの内容を参照できます。

  4. Access のヘルプに戻るには、[検索] の横にあるドロップダウン矢印をクリックし、[Office.com のコンテンツ] または [このコンピューター上のコンテンツ] の下の [Access ヘルプ] をクリックします。

オフライン ヘルプまたはオンライン ヘルプの使用方法の詳細については、ヘルプ ウィンドウの右下隅にある [接続状態] メニューをクリックし、[オプションの説明] をクリックしてください。

ヘルプ ビューアーの [接続状態] メッセージ

ページの先頭へ

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×