アクセスでテーブル名を所得したいけど。。。


てんてん  2004-02-12 14:12:50  No: 111789  IP: [192.*.*.*]

はじめまして、なにぶん超素人ですが、データベースを作って見たいのですが。。。。

以下のプログラムを作成したのですが。。。
コンパイルすると、Dim db As Database のところで、"コンパイルエラー  不正なモジュールです"と出てしまいます。なぜ?前にプログラムを組んだときはそんなのなかったのに。
ちなみに、参照設定はちゃんと行っています。ひょっとして、
凡ミス?だれか見当つきませんか?


Public Sub CategoryA2_Get()
    Dim db As DataBase    '←ここで、"コンパイルエラー  不正なモジュールです"と表示される
    Dim strTbl As String

    'オブジェクト変数の設定
    Set db = _
        DBEngine.Workspaces(0).OpenDatabase("C:\_MyWork\設備\_JIGXXXX_Testプログラム\Test プログラム\DataBase\WindowInt.mdb")

      'テーブルの TableDef オブジェクトの数の回数でループする
      For i = 1 To db.TableDefs.Count
          '取得した TableDef オブジェクトが [MSys/USys] 以外で
          'はじまるの名前をセルに入力する
          strTbl = MyDB.TableDefs(i - 1).Name
              If Left$(strTbl, 4) <> "MSys" And _
                  Left$(strTbl, 4) <> "USys" Then

                  ThisWorkbook.Sheets("sheet1"). _
                  Range("a1").Offset(j, 0).Value = strTbl

                  j = j + 1

              End If
      Next


End Sub

編集 削除
へいぽお  2004-02-12 15:18:51  No: 111790  IP: [192.*.*.*]

Dim db As DAO.Database

としてみたらどうでしょう?

編集 削除
岡田 之仁  2004-02-12 15:20:24  No: 111791  IP: [192.*.*.*]

う〜ん・・・
アクセスのバージョンは?
参照設定されたDAOのバージョンは?

因みに、上記のコードは、どう見ても動かない代物です。

※  動く最低のコードを記述して欲しいですが・・・
    エクセルへの出力も行っておられるので・・・

以上。

編集 削除
岡田 之仁  2004-02-12 21:55:59  No: 111792  IP: [192.*.*.*]

一応、コードはこんな感じですが・・・

    Dim AdX As AdoX.Catalog
    Dim AdxTable As AdoX.Table
    
    Set AdX = New AdoX.Catalog
    
    AdX.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;"
    
    For Each AdxTable In AdX.Tables
        If AdxTable.Type = "TABLE" Then
            Debug.Print AdxTable.Name
        End If
    Next

    Set AdX = Nothing

※  参照設定で、Microsoft ADO Ext V2.x for DDL and Security
    を選択して下さい。

    一応、Access2000 以上です。
    指定が無かったので・・・

以上。

編集 削除