• ベストアンサー

ExcelVBAでのAccessデータベースとの接続

ExcelのVBAによるAccessデータベースの操作を勉強中(始めたばかり)です。 ソフトバンク パブリッシング出版の「Excel VBA データベース構築」で勉強しているのですが、その中で、外部データとの接続に関して以下のような例文がありました。 Sub openADOdb() Dim myADOcon As ADODB.Connection Set myADOcon = New ADODB.Connection myADOcon.Open _ "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb" myADOcon.Close Set myADOcon = Nothing End Sub これを実行すると、myADOcon.Open ”Provider~ のところで、以下のエラーが発生しました。 実行時エラー’3706’: プロバイダが見つかりません。正しくインストールされていない可能性があります。 これはExcelもしくはAccessが正しくインストールされていないということなのでしょうか。対処法としてはどのような方法がありますか。 また、本には「プロバイダ名には、どのOLE DBプロバイダを使用するかをしていします。この文字列は、OLE DBプロバイダのマニュアルやヘルプを調べると記載されています。」と出ているのですが、OLE DBプロバイダのヘルプとはどのようにしたら見れるのでしょうか。 なお、Excel97とAccess97を使っています。 以上2点よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

97ではADOは使えません。 ADOは2000からです。 2000の場合はAccess2000の形式のデータベースに接続する場合プロバイダは Microsoft.Jet.OLEDB.4.0 以上のバージョンを指定します。 "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb" ではなく "Provider=Microsoft.Jet.OLEDB.4.0;" & _"Data Source=C:\残高DB.mdb" で出来るはずです。 97で同様の処理をするならDAOを使えばできます。 DAOを使用してAccessデータベースに接続するんです。 OpenDatabase メソッドの引数にデータベース名を指定します 「参照設定」で [Microsoft DAO 3.5 Object Library] に参照します。 Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset Set ws = DBEngine.Workspaces(0)  'デフォルトのワークスペースを定義 Set db = ws.OpenDatabase("C:\残高DB.mdb") 'データベースを開く Set rs = db.OpenRecordset("Table1", dbOpenDynaset) 'テーブル名を指定してレコードセットを作成する こんな感じで出来ますよ。

takaandhiro
質問者

お礼

ありがとうございました。 よく分かりました。

その他の回答 (3)

回答No.3

Excelはちょっとわかりませんが、AccessのADO接続は2000からですので、 97では無理だと思います。 OFFICEをバージョンアップするか、DAOの勉強をするかですね・・・

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

OSは何でしょう?Jet.OLEDB.3.51がインストールされていないと思われます。 OSやIEのバージョンによってはOLEDBのバージョンが異なるものが標準で入っていることのほうが多いので、バージョンの個所を変えれば接続できると思います。 私がよくやっている”インチキ”な確認方法です。 1.どこでもいいんで、拡張子が.udlのファイルを作成する(空でかまわない)。アイコンが変わればADO(MDAC)がインストールされている。 2.ファイルをダブルクリックで開くと”データリンクプロパティ”が表示されるので、プロバイダのタブを選択し、インストールされているJetプロバイダのバージョン番号を確認する。 ちなみに私のWin2000マシンでは、4.0が入っていました。 なお、Office97ではADOはインストールされません。 というか、Office97のあとに世に出てきたものなんで。

takaandhiro
質問者

お礼

ありがとうございました。 お教えいただいた確認方法は便利そうなので、私も使わせていただきます。

  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.1

myADOcon.Open _ "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb" ↑「Open」ではなく、「ConnectionString」ではないでしょうか? 上記の接続を確率してから、「myADOcon.Open」だと思います。

関連するQ&A