• ベストアンサー

Access2000のVBAでコンパイルエラー

yoishoの回答

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

DAOの参照設定が、されていますでしょうか? モジュールウィンドウを開いて、ツール→参照設定で、 Microsoft DAO 3.6 Object Library がチェックされていないようでしたら、チェックしてみください。 今、Access2000が手元にないので自信がありませんが、Recordsetは ADO でも使えるようですが、Database はDAO のオブジェクトかと思います。

love3factory
質問者

お礼

ありがとうございます。 どうやらそのようですね。 Recordsetは両方にあるみたいです。 参照設定の優先順位の関係で、「Recordset」だけで宣言すると DAOの方を見てくれてなかったりしました。 Dim db As Database Dim rs As Recordset Set db = CurrentDB Set rs = db.OpenRecordset(ほにゃらら) としたら、型がちがうとやらのエラーになりました。 最初の方がおっしゃったとおり、 「DAO.Database」「DAO.Recordset」と 記述するように心がけるべきみたいです。

関連するQ&A

  • Access2002 VB がエラー

    Access2002 VBで以下のコーディングをしてます Dim db As Database Dim rs As Recordset Dim fld As Field Set db = CurrentDb Set rs = db.OpenRecordset("ConvertChar") これを実行するとdb宣言行で以下のエラーが表示されます。 コンパイルエラー: ユーザ定義型は定義されていません。 これは何が原因でエラーとなるのでしょうか? 宜しくお願いします。

  • アクセスVBAです

    Sub test() Dim DB As Database Dim T As TableDef Dim myTable As String myTable = "Table1" Set DB = OpenDatabase(CurrentProject.FullName) For Each T In DB.TableDefs If T.Name = myTable Then DoCmd.DeleteObject acTable, myTable Exit For End If Next DB.Close Set DB = Nothing End Sub これを実行しようとすると Dim DB As Database の部分で コンパイルエラー プロジェクトではなく、ユーザ定義型を指定してください。 と言うエラーになります。 Dim DB As Objectにすればエラーにならずに進みますが 何が原因なのでしょうか?

  • ACCESSの宣言

    Private Sub コード_AfterUpdate() Dim Mdb As Database Dim Mtb As Recordset Dim sqlstr As String って、始めに宣言しますが、いざプログラムを走らせてみると、Dim Mdb As Database で "コンパイルエラー ユーザー定義型は定義されていません" になってしまいます。ここでひっかかるともうどうにもできないです。 なぜ、この宣言はいけないのでしょうか?

  • アクセス97のVBAが2000で使えません。

    ACCESS97で問題なく動いていたVBAなのですが、ACCESS2000では「ユーザー定義型は定義されていません。」というエラーとなって動きません。 ソースで言うと、 Dim DB As Database というような変数宣言の部分でいきなり出てきます。 Database型がユーザー定義型と認識されているようですが、何故こうなってしまうのでしょう? またどのようにすればこの問題を解消できるでしょうか? また97と2000でのコーディング上の変更点などは、どこで調べるのが分り易いでしょうか?

  • Visual Basic 6.0 でデータベースが作成できない。

    超初心者です。 XP Home Edition へ Visual Basic 6.0 Professional Editon と SP6 をインストールしました。 標準exe 画面から Dim Ws as Workspace Dim Db as Database として実行するとコンパイルエラーになります。 Dim Ws as まで入力すると補助ボックスが開きますが、その中の項目に workspace,database いずれもありません。 初期設定の問題でしょうか。

  • ACCESS2000でテーブルをVBAからテーブルを読み込む方法

    ACCESS2000を使っています。 以下の指定をした場合、「ユーザ定義型は定義されていません」のメッセージが出て、コンパイルが通りません。 なにかインストールや設定が必要なのでしょうか? Dim db As Database Dim rs As Recordset Set db = CurrentDb() Set rs = db.OpenRecordset("テーブル名", dbopendynaset) ヘルプ等を自分なりに参照してみたのですが、わかりません。教えてください。

  • ACCESS2000でコンパイルエラーが表示されてしまいます

    ACCESS初心者です。宜しくお願いします。 前任者が作成したACCESS2.0で使用していたものを、ACCESS2000でコンパイルすると、 コンパイルエラー ユーザ定義型は定義されていません。と表示されてしまいます。 Sub ページ設定P() Dim DB As Database, T As Table, X As Integer, I As Integer, 図面番号 As Integer Set DB = CurrentDb() Set T = DB.OpenTable("図面リスト印刷TEMP") ' テーブルを開きます。 X = DCount("印刷", "図面リスト印刷TEMP", "[印刷]=No") If X > 27 Then X = X - 27 + 43 X = X Mod 42 X = X For I = 1 To X T.MoveLast T.Delete Next I Else X = X - 27 + 43 X = X For I = 1 To X T.MoveLast T.Delete Next I End If End Sub どのようにすれば動くのでしょうか? 以上、宜しくお願い致します。

  • DATABASE型について

    ACCESSプロジェクトを使っています。  (基本的な理解不足だと思いますが) Access97では、 Dim DB As Database Dim RS As Recordset と宣言して Set DB =CurrentDb() Set RS=DB.OpenRecordset(… で使えていましたが、Accessプロジェクトでは使えません。 (ストアドプロシージャ部分ではなく、フォームのVBA部分で) フォーム上のボタンから、モジュール操作を実行したいのですが、 上記 そのまま使用すると 「コンパイルエラー ユーザー定義型は定義されていません」 と出てきます。 Accessプロジェクトで操作するにはどのようにすればいいのでしょうか?

  • ACCESS2007でのDAO(?)につきまして

    お世話になっております。 ACCESSの件で色々教えて頂き、とても感謝しております。 つきましては、ACCESS2007で疑問に思える点がありましたので 以下に記述いたします。 あるACCESS2007のVBAの記述で Dim myDB As Database Dim myQueryDef As QueryDef なる変数定義がされているのを見たのですが 質問があります <質問1> 上記の定義はDAOを使用しているという事になるのでしょうか? <質問2> DAOであるならば Dim myDB As DAO.Database Dim myQueryDef As DAO.QueryDef と記述するのが正しいのではないでしょうか? (Option Explicitは記述してあります) 私には謝った記述に見えるのですが、動作 している理由がわかりません。 質問が変かもしれませんが、どなたか教えて 頂けるありがたいです。

  • 早速やってみましたが、エラーが出てきてできません。

    早速やってみましたが、エラーが出てきてできません。  「ユーザー定義型が定義されていません。」と Dim DB As Database ここでとまってしまいます。 Help見たのですが、「オブジェクト ライブラリまたはタイプ ライブラリで定義する」とありました。 設定してみようとしたのですが、どれが必要なのかさっぱりわかりません。