初めての Access プログラミングの開始

新しいデータベースを作成する場合には、通常、テーブル、フォーム、レポートなどの、いくつかのデータベース オブジェクトを作成することから始めます。そのうちに、特定の処理を自動化したり、複数のデータベース オブジェクトを互いに関連付けたりするために、プログラミングを行う必要が生じてきます。ここでは、Microsoft Office Access 2007 のプログラミング ツールを紹介し、さらにプログラミングについて調べるためのリソースをいくつか示します。

この記事の内容

プログラミングとは

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

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

マクロを理解する

VBA コードを理解する

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

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

プログラミングとは

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

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

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

ページの先頭へ

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

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

安全でない可能性のあるコンテンツを有効または無効にする方法の詳細については、「Office ドキュメントのマクロを有効または無効にする」を参照してください (この記事の他の場所で説明しているように、他のほとんどの Microsoft Office プログラムでは、"マクロ" という用語を VBA コードを指すものとして使用しているため、この用語を Access マクロと混同しないようにしてください)。

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

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

オブジェクトまたはコントロールにプログラミングを追加するときは、次の優先順位に従って使用を検討する必要があります。

  1. データベースを信頼しなくても実行できるアクションのみから構成されるマクロ

  2. 実行するためにはデータベースを信頼する必要のあるアクションを含むマクロ

  3. VBA プロシージャ

マクロの作成時には、マクロ ビルダで [すべてのアクションを表示] をクリックすることにより、アクションの一覧を切り替えて、データベースを信頼しなくても実行できるマクロ アクションの短い一覧を表示するか、すべてのマクロ アクションを含む長い一覧を表示することができます。[すべてのアクションを表示] をクリックすると、"RunCommand/コマンドの実行" マクロ アクションの引数もすべて表示されます。マクロの作成方法の詳細については、「マクロを理解する」セクションを参照するか、[参照] セクションのリンクをクリックしてください。

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

マクロによって提供されるセキュリティの強化や使いやすさのため以外にも、次のような場合にマクロを使用する必要があります。

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

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

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

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

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

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

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

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

他のユーザーに配布するデータベースで VBA コードを使用する場合は、信頼できる発行元のコードであることをユーザーが確認できるように、データベースをパッケージ化して署名することを検討してください。データベースのパッケージ化および署名の詳細については、「Access データベースを保護する」を参照してください。

ページの先頭へ

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

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

  1. Office ボタンのイメージ (Microsoft Office ボタン) をクリックし、[開く] をクリックします。

  2. [ファイルを開く] ダイアログ ボックスで、データベースを選択して開きます。

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

  4. [デザイン] タブの [コントロール] で ボタンの画像 (コントロール ウィザードの使用) が選択されていることを確認します。

    ボタンの画像

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

    ボタンの画像

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

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

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

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

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

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

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

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

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

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

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

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

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

    3. [クリック時] ボックスにカーソルを置き、 [ビルダー] ボタン をクリックします。

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

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

ページの先頭へ

マクロを理解する

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

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

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

マクロ ビルダー

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

  • [作成] タブの [その他] で [マクロ] をクリックします。このコマンドを使用できない場合は、[モジュール] ボタンまたは [クラス モジュール] ボタンの下にある矢印をクリックし、[マクロ] をクリックします。 ボタンの画像

マクロの作成の詳細については、この記事の [参照] セクションのリンクを参照してください。

ページの先頭へ

VBA コードを理解する

VBA は、Access で強力なアプリケーションを作成するためのプログラミング言語です。VBA には数多くのコマンドが用意されており、Access マクロを使用した場合よりもさらに複雑な操作を実行することができます。

サード パーティのコントロールを使用して VBA の機能を拡張でき、また、特定の目的に合わせて独自の関数やプロシージャを記述できます。VBA を使用して、Access を他のプログラムと統合することもできます。

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

ページの先頭へ

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

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

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

このプロセスでは、フォームやレポート (またはその上に配置されたコントロール) によって参照される (またはそこに埋め込まれている) 任意のマクロが 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 コードを追加する基本的な手順の学習は終わりです。この記事では作業を始めるための基本を説明しただけですが、プログラミング スキルの向上に役立つ参考書やオンライン リソースは豊富にあります。

ページの先頭へ

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

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

ヘルプ エントリ ポイント

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

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

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

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

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

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

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

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

    ヘルプの検索リスト

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

    ヘルプ検索リスト

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

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

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

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

ヘルプ ビューアーから Office Online に接続します。

ページの先頭へ

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

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

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

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

×