#700 プロジェクトではなくユーザ定義型を指定してくださいエラーの対処法 VBA

VBAのプログラムで下記のような何の変哲もないコードにおいて、「Dim dbs As Database」の行で『コンパイルエラー:プロジェクトではなく、ユーザ定義型を指定してください。』というエラーがコンパイル時あるいは実行時に発生する場合の対処法です。

Private Sub cmdOK_Click()

  Dim dbs As Database  
  Dim rst As Recordset

  Set dbs = CurrentDb
  〜〜〜 以下省略 〜〜〜




VBEのプロジェクトエクスプローラーにおいて、ツリーの最上部の名称が『Database (●●●)』(●の部分は任意のaccdbのファイル名)になっていないか確認してみてください。もしそうなっていれば、その「VBAのプロジェクト名は”Database”である」ということになります。
そしてこの名称が上記のDAOのオブジェクト名である「Database」とバッティングしているのがエラーの原因です。



その場合は、プロジェクト名をそれ以外の名前に変更することで解決できます。
  1. もしプログラムが実行中のエラーで止まっている場合には、[実行]メニューやツールバーで[リセット]して、プログラムを終了した状態にします。

  2. プロジェクトエクスプローラーで「Database (●●●)」の文字の部分を”右”クリックして[●●●のプロパティ]メニューを選択するか、VBEの[ツール]-[●●●のプロパティ]メニューを選択して、「プロジェクトプロパティ」画面を表示させます。

  3. 「プロジェクトプロパティ」画面の「プロジェクト名」の欄を”Database”以外”の任意の名前に変更します。
    一般的な.accdbであればプロジェクト名がコードに関係してくることはありませんので、データベースのファイル名と同じものなどが妥当かもしれません。




  4. [OK]ボタンをクリックしてこの画面を閉じたあと、コンパイルを実行し、エラーが出なくなったことを確認します。

※Accessで空のデータベースを新規作成すると、.accdbのファイル名と同じ名前がVBAのプロジェクト名に設定されます。「Database1.accdb」や「Database2.accdb」など、通常Accessが初期設定してくれるファイル名なら問題ないのですが、それを意図的に「Database.accdb」とした場合、VBAのプロジェクト名も自動的に「Database」となるため、このような問題が発生します。当然ですが、あとからプロジェクト名を「Database」に書き換えた場合も同様です。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved