Access データベースでの参照の問題を解決する方法

元の KB 番号: 310803

概要

この記事では、Access データベースでの参照の使用に関連する問題について説明します。

参照エラーについて理解するには、Access データベースでのライブラリの参照方法と、これらの参照を壊さずにターゲット コンピューターにデータベースをインストールするために必要な情報の両方を理解する必要があります。 この記事では、次のトピックの概要を示します。

  • Access データベース参照の表示
  • Access での Microsoft Visual Basic for Applications 参照の解決
  • 参照エラー メッセージについて
  • 開発コンピューターでの参照の問題の解決
  • データベース ファイルの配布
  • 参照リストの更新
  • ActiveX コントロールを持つデータベース ファイルの配布
  • ファイルの再登録

Access データベース参照の表示

現在のデータベース参照を表示するには、次の手順を実行します。

  1. データベースを開きます。
  2. ALT+F11 キーを押して、Visual Basic Editor を起動します。
  3. [ツール] メニューの [参照設定] をクリックします。

Access での Visual Basic 参照の解決

Access は、[参照設定] ボックスに表示される情報に従って、各参照に関連するファイル (タイプ ライブラリ、オブジェクト ライブラリ、またはコントロール ライブラリなど) を読み込みます。 Access でファイルが見当たらない場合、Access は次の手順を実行してファイルを検索します。

  1. Access は、参照されているファイルが現在メモリに読み込まれているかどうかを確認します。
  2. ファイルがメモリに読み込まれていない場合、Access は RefLibPaths レジストリ キーが存在することを確認しようとします。 キーが存在する場合、Access は参照と同じ名前の名前付きの値を検索します。 一致する情報がある場合、Access は、名前付きの値が指すパスから参照を読み込みます。
  3. 次に、Access は、以下の場所で参照されているファイルを次の順序で検索します。
    1. アプリケーション フォルダー (Msaccess.exe ファイルの場所)。
    2. [ファイル] メニューの [開く] をクリックした場合に表示される現在のフォルダー。
    3. オペレーティング システム ファイルが実行されている Windows または Winnt フォルダー。
    4. Windows または Winnt フォルダーの下のシステム フォルダー。
    5. オペレーティング システムから直接アクセスできる PATH 環境変数内のフォルダー。
  4. Access でファイルが見当たらない場合、参照エラーが発生します。

参照エラー メッセージについて

不足しているファイル、またはデータベースで使用されているバージョンとは異なるバージョンのファイルに関連するエラー メッセージがいくつかあります。 ほとんどの場合、Microsoft サポート技術情報で特定のエラー メッセージに関する記事を検索し、記事の手順に従ってエラーを解決できます。 場合によっては、依存関係ファイルがプライマリ ファイルと正しく一致しないことがあります。

次のリストに、表示される可能性がある参照エラー メッセージの一部を示します。 ただし、リストには、考えられるすべての参照エラーメッセージが含まれているわけではないことに注意してください。

  • "オブジェクト ObjectName のメソッド MethodName が失敗しました"

    通常、このエラー メッセージは、無効なデータ アクセス オブジェクト (DAO) ダイナミック リンク ライブラリ (DLL) ファイルなどのプログラミング タイプ ライブラリに問題がある場合に表示されることがあります。 このエラー メッセージのさまざまな形式を説明している記事については、Microsoft サポート技術情報を検索してください。

  • "Usage 式では関数を使用できません"

    プログラミング タイプ ライブラリに問題がある場合、またはコードが正しいライブラリを具体的に呼び出しておらず、ファイルが同じファイル名前を含むファイルよりも参照リストに低い優先度でリストされている場合に、このエラー メッセージが表示されることがあります (DAO コードが DAO ライブラリよりも高い優先度でリストされている ActiveX Data Object (ADO) ライブラリで使用されている場合など)。 フォームまたはレポートに ActiveX コントロールが含まれている場合にも、このエラー メッセージが表示されることがあります。

  • "プロジェクトまたはライブラリが見つかりません"

    Access で参照リスト内のファイルが見当たらない場合、このエラー メッセージが表示されることがあります。 多くの場合、ファイルは [参照設定] ダイアログ ボックスで「不明」としてフラグが設定されます。 ファイルは開発コンピューターには存在するが、ターゲット コンピューターには存在しない場合があります。

  • "変数が定義されていません" または "ユーザー定義型は定義されていません"

    ユーザーレベルのセキュリティ ウィザードを使用して、既定で含まれているライブラリ以外のライブラリを参照するデータベースを保護すると、これらのエラー メッセージのいずれかが表示される場合があります。 たとえば、セキュリティで保護されていないデータベースに存在していたライブラリへの参照は、セキュリティで保護された新しいデータベースに自動的に作成されません。

  • "実行時エラー 5"、"プロシージャの呼び出し、または引数が不正です"、"シンボルを含んでいるライブラリは、このプロジェクトでは参照されていません"、または "シンボルを含んでいるライブラリは、このプロジェクトでは参照されていないため、シンボルは未定義です"

    データベース、タイプ ライブラリ、または「不明」としてフラグが設定されたオブジェクト ライブラリへの参照がある場合、これらのエラー メッセージのいずれかが表示されることがあります。

  • "ActiveX コンポーネントはオブジェクトを作成できません"

    このエラー メッセージは、ActiveX コントロールが関係していることを必ずしも意味するものではありません。 たとえば、考えられる原因の 1 つは、DAO オートメーション サーバーを起動できないため、ActiveX コンポーネントである DAO がオブジェクトを作成できないことです。 多くの場合、原因は、プログラムの参照機能を提供する DLL が登録されていないか、正しく登録されていないことです。

開発コンピューターでの参照の問題の解決

コードまたは ActiveX コントロールが既定でデータベースに含まれていない参照に依存している場合、新しい空のデータベースを作成し、別のデータベース ファイルからオブジェクトをインポートすると、参照の問題が発生する可能性があります。 Access 2000 データベースの既定の参照は次のとおりです。

  • Visual Basic for Applications
  • Microsoft Access 9.0 オブジェクト ライブラリ
  • OLE オートメーション
  • Microsoft ActiveX データ オブジェクト (ADO) 2.1 ライブラリ

ソースが別の Access 2000 データベースである場合は、参照が一致することを確認します。 ソースが以前のバージョンの Access にある場合は、DAO 3.5 以前が使用されている可能性があります。ただし、Access 2000 は既定で DAO 3.5 を提供しません。 ADO 2.1 ライブラリ (存在する場合) への参照を削除し、DAO 3.6 オブジェクト ライブラリへの参照を追加します。

以前のバージョンの Access からデータベースを変換し、データベースに Utility.mda ファイルへの参照が含まれている場合、この参照が呼び出す関数は Access 2000 の既定の参照に含まれているため、ほとんどの場合、この参照を削除できます。 以前のバージョンの DAO への参照がある場合、DAO 3.6 はこれらの機能に対応できるため、これらの参照を削除することもできます。

ライブラリへの参照を追加するには、次の手順を実行します。

  1. データベースを開きます。
  2. ALT+F11 キーを押して、Visual Basic Editor を起動します。
  3. [ツール] メニューの [参照設定] をクリックします。
  4. [使用できる参照] で、ライブラリ名の横にあるチェック ボックスをクリックしてオンにし、[OK] をクリックします。

ライブラリへの参照を削除するには、次の手順を実行します。

  1. データベースを開きます。
  2. ALT+F11 キーを押して、Visual Basic Editor を起動します。
  3. [ツール] メニューの [参照設定] をクリックします。
  4. [使用できる参照] で、ライブラリ名の横にあるチェック ボックスをクリックしてオフにし、[OK] をクリックします。

データベース ファイルの配布

データベース ファイルの基本的な配布方法は 2 つあります。 開発コンピューターからターゲット コンピューターにファイルをコピーするか、パッケージおよび展開ウィザードを使用してセットアップ パッケージを作成できます。

開発コンピューターからターゲット コンピューターにファイルをコピーすると、データベース ファイルのみがコピーされます。 参照リストに一覧されているすべてのファイルが、正しいバージョン レベルで、ターゲット コンピューターと開発コンピューターの同じ相対位置で使用可能であることを手動で確認する必要があります。

Access で実行時アプリケーションを開発する場合は、一部のオペレーティング システム ファイルを実行時アプリケーションと共に配布する必要があることに注意してください。 これらのファイルのパッケージ化は、Microsoft Office 2000 Developer のパッケージと展開ウィザード コンポーネントによって自動的に実行されます。 含まれるファイルのバージョンは、開発コンピューターにインストールされ、オペレーティング システム ファイルが変更された可能性がある他のアプリケーションによって異なる場合があります。

通常、特定のガイドラインに従うことで、実行時アプリケーションをインストールするときに、使用するファイルのバージョンがターゲット コンピューター上のファイルと競合しないことが保証されます。 ガイドラインは次のとおりです。

  1. 任意のコンピューターで Access データベースを開発します。
  2. ハード ディスクが再フォーマットされ、該当するオペレーティング システム、Office、および Office 2000 Developer の最も古いバージョンのみがインストールされているコンピューター環境を作成します。 このコンピューターでパッケージと展開ウィザードを実行して、アプリケーションの実行時バージョンを作成します。 これにより、ファイルのリビジョン レベルが任意のターゲット コンピューターで機能することが保証されます。
  3. ハード ディスクが再フォーマットされ、オペレーティング システムのみがインストールされているコンピューター環境を作成します。 この環境で実行時アプリケーションをテストします。
    • アプリケーションが正常に実行されない場合は、アプリケーション自体に問題があることがわかります。 アプリケーションを配布する前に、問題を特定して修正する必要があります。
    • アプリケーションがテスト コンピューターでは正常に機能するが、ターゲット コンピューターで機能しない場合は、アプリケーションではなくターゲット コンピューターに問題があることがわかります。 ターゲット コンピューターで考えられる原因 (互換性のないファイルや破損したファイルなど) を特定して修正する必要があります。

参照リストの更新

参照の問題に ActiveX コントロールが関係している場合は、参照リストを更新することで問題を解決できる場合があります。 参照リストを更新するには、次の手順を実行します。

  1. Visual Basic Editor の [ツール] メニューの [参照設定] をクリックします。
  2. [参照設定] ダイアログ ボックスで、まだ選択されていない参照をクリックしてオンにし、選択した参照をメモしてから、[OK] をクリックします。
  3. [ツール] メニューの [参照設定] をもう一度クリックします。
  4. クリックして参照の選択をキャンセルし、[OK] をクリックします。

ActiveX コントロールを持つデータベース ファイルの配布

ActiveX コントロールのライセンスには、デザイン時ライセンスと実行時ライセンスの 2 種類があります。

  • デザイン時ライセンスを使用すると、Office 2000 Developer からライセンスされた ActiveX コントロールを、Access データベースのフォームとレポートに挿入できます。
  • 実行時ライセンスを使用すると、Office 2000 Developer がインストールされていないコンピューターの Access データベースで ActiveX コントロールを使用できますが、新しいライセンスの ActiveX コントロールを挿入することはできません。 実行時ライセンスをインストールするには、パッケージと展開ウィザードを使用して ActiveX コントロールを配布します。このウィザードは、ターゲット コンピューターのレジストリにコントロールのライセンスを書き込みます。

[デザイン] ビューでモジュールを開き、[ツール] メニューの [参照設定] をクリックすると表示されるフラグが「不明」である場合は、ターゲット コンピューターのコモン ダイアログ コントロールへの参照が、開発コンピューターのデータベース ファイルのソースと一致しないことを示します。

配布可能なコモン ダイアログ コントロールをインストールせずにデータベース ファイルを配布すると、コントロールの参照に「不明」のフラグが設定されるか、配布不可能なコントロールが既にターゲット コンピューターにインストールされている場合は "この ActiveX コントロールを使用するために必要なライセンスがありません" というエラー メッセージが表示されることがあります。

データベース ファイルが実行時アプリケーションの一部である場合でも、ターゲット コンピューターに既にインストールされている配布不可能なコントロールが、実行時アプリケーションによって提供されるコントロールよりも後のバージョンの場合は、"この ActiveX コントロールを使用するために必要なライセンスがありません" というエラー メッセージが表示されることがあります。 この問題は、セットアップ プログラムがファイルの新しいバージョンを同じファイルの以前のバージョンで上書きしないために発生する可能性があります。

ファイルの再登録

レジストリに正しく登録されていなくても、ファイルが参照リストに含まれている可能性があります。 これに該当する可能性があると思われる場合は、次の手順に従ってファイルを再登録します。

  1. Microsoft Windows NT 4.0 では、[スタート] ボタンをクリックし、[検索] をポイントしてから [ファイルまたはフォルダ] をクリックします。Windows 2000 では、[スタート] ボタンをクリックし、[検索] をポイントしてから [ファイルとフォルダを検索] をクリックします。
  2. [名前付き] ボックス、または [ファイルまたはフォルダの名前] ボックスに、「regsvr32.exe」と入力します。
  3. [場所] ボックスで、ハード ディスクのルート (通常は C:) をクリックします。
  4. [サブフォルダを含める] チェック ボックスがまだ選択されていない場合はクリックしてオンにし、[今すぐ検索] または [検索開始] をクリックします。
  5. ファイルを見つけたら、[スタート]、[ファイル名を指定して実行] の順にクリックし、[名前] ボックスにあるものをすべて削除します。
  6. Regsvr32.exe ファイルを検索結果ウィンドウから [名前] ボックスにドラッグします。
  7. 手順 2 ~ 6 を繰り返し、FileName.dll を検索します。ここで、FileName は、再登録するファイルの名前です。
  8. FileName.dll ファイルが Regsvr32.exe ファイルのある [名前] ボックスに入ったら、[OK] をクリックします。
  9. Access で、問題がまだ存在するかどうかをテストします。

コンピューターに Regsvr32.exe ファイルがない場合は、他のコンピューターでファイルを確認します。 ファイルが利用できない場合は、Microsoft Web サイトからファイルを入手できます。

注:

参照を調整した後は、すべてのモジュールをコンパイルすることを忘れないでください。 モジュールを開いたまますべてのモジュールをコンパイルするには、[デバッグ] メニューの [データベースのコンパイル] をクリックします。 モジュールがコンパイルされていない場合は、未解決の参照が追加される可能性があります。