以降のセクションでは、VBA に関する有用な情報を提供します。 Northwind 2.0 Starter Edition データベースで簡単に調べることができるように、オブジェクト名が用意されています。
VBA (Visual Basic for Applications) は、Access だけでなく、すべての Microsoft 365 製品で使用されるプログラミング言語です。 主に、開発者向けドキュメントにアクセスする方法について説明します。開始するには、「Access プログラミングの概要」を参照してください。
情報を検索するときは、必ず Access 固有の例を探し、検索用語に Microsoft Access を含めます。 多くの場合、他の Microsoft 365 製品のソリューションは機能しますが、変更が必要な場合があります。
Microsoft Access は成熟した製品です。 つまり、そこに多くの例があり、これはあなたに最適です。 これは、Access プログラミングに関する古い書籍を見るためにまだ実行可能であることを意味します。 古い本の多くは、元のコストのほんの一部で古い本のサイトでまだ利用可能です。
Microsoft Access ファイルは Microsoft 365 ファイルです。 Microsoft 365 ファイルは信頼できる場所にあるか、コンテンツを有効にする必要があります。 これらのアイテムは、作成したアイテムまたは信頼できるソースからのアイテムであるため、安全と見なされます。 このチェックは、Microsoft 365 ファイルを開くたびに行われます。 ここから、これを信頼済み/有効と見なします。 新しいバージョンのアプリケーションがリリースされ、信頼されていない場所から開かれた場合、コンテンツを有効にするプロセスが繰り返されます。 詳細については、「Microsoft 365 ファイルの信頼できる場所」、データベースを信頼するかどうかを決定する、および Microsoft 365 で信頼できる場所を追加、削除、または変更する方法に関するページを参照してください。
マクロ、関数、サブプロシージャは、ビジネス ロジックを Access データベースに実装する方法です。
フォーム上のコントロール (ボタン、テキスト ボックス、ラベルなど) は、イベント (コントロールのクリックなど) を使用して、レコードの追加、削除、フォームの開き方など、他のプロセスをトリガーできます。 これらのプロセスは、マクロまたは VBA を使用して実装できます。 Northwind では、ほとんどのマクロと一部の VBA が使用されます。 詳細については、「RunCode マクロ アクション」を参照してください。
一部のコントロールの種類には、マクロを自動的に作成するウィザードが組み込まれています。 たとえば、フォームにコマンド ボタンを追加すると、ボタンのいくつかの機能を提供するウィザードが開きます。 コンボ ボックスを追加すると、フォーム上の特定のレコードを検索するように構成できるウィザードが開きます。
ナビゲーション ウィンドウは、すべてのデータベース オブジェクトを表示およびアクセスする主な方法であり、既定では [アクセス] ウィンドウの左側に表示されます。 Northwind 2.0 Starter Edition ナビゲーション ウィンドウがカスタマイズされました。 Northwind Starter 2.0 というカスタム カテゴリを作成しました。 これにより、機能領域別にオブジェクトを整理できます。 詳細については、「ナビゲーション ウィンドウのカスタマイズ」を参照してください。
Access と Microsoft 365 内のスコープと可視性について学習することが重要です。 スコープとは、別のプロシージャで使用する変数、定数、またはプロシージャの可用性を指します。 スコープ レベルには、プロシージャ レベル、プライベート モジュール レベル、パブリック モジュール レベルの 3 つのスコープ レベルがあります。 変数を宣言するときに、変数のスコープを決定します。 スコープが異なる変数間の名前付け競合エラーを回避するために、すべての変数を明示的に宣言することをお勧めします。 すべてのモジュールには、オプション比較データベースと Option Explicit という 2 つのディレクティブ ステートメントがあります。 詳細については、「 スコープと可視性について」、「Public ステートメント」、「Private ステートメント」、「Static ステートメント」、および「変数の有効期間について」を参照してください。
場合によっては、変数を作成したオブジェクトがスコープ外になった後に変数が存在する必要があります。 これを行うには、 パブリック変数、 TempVars、およびローカル テーブルに値を格納する 3 つの主要な方法があります。 これらはそれぞれ長所と短所があります。 多くの開発者は、これらの組み合わせを使用します。
現在のセッションにはパブリック変数と TempVars が存在し、アプリケーションが閉じられるとスコープ外になります。 セッション間でユーザー固有の変数を保持する場合はどうなりますか? これらの種類の値は、ローカル テーブルに格納できます。 Northwind 2.0 Starter Edition では、SystemSettings というテーブルにこれらの値があります。 たとえば、テーブル内の値は "ShowWelcome" です。 この値は、ログインするたびにようこそ画面を表示するかどうかを示します。
Access に組み込まれているコントロール ウィザードを使用した場合、マクロが作成された場合、エラー処理がまったく発生しないことがよくあります。また、VBA が作成された場合は、MsgBox 関数、 Err.Description スタイルに制限される可能性があります。
Northwind 2.0 Starter Edition では、グローバル エラー ハンドラーと呼ばれるものを実装しました。 プロシージャで発生するエラーは、グローバル レベルで関数を呼び出してエラーを表示します。 大きな利点は、コードが一貫性があり、エラー番号の表示やファイルへのエラーのログ記録など、メッセージを変更する必要がある場合は、1 つの場所でのみ実行できることです。
clsErrorHandler は、エラー処理コードを実装するクラス モジュールです。 クラス モジュールは、すべてのメイン関数とヘルパー関数を 1 つのユニットにまとめ、コードをよりカプセル化します。 AutoExec マクロは、最終的に modStartup でスタートアップ関数を呼び出し、clsErrorHandler のインスタンスを作成し、それをグローバル変数として保存して、アプリケーション全体で使用できるようにします。
実際、プロシージャ内のエラー処理コードは非常に一貫性があるため、各プロシージャに適切なエラー ハンドラーを用意した高級 VBA コードを使用して、すべてを 5 分以内に作成できました。 このコードはテンプレートに含まれていません。