みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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点よろしくお願いします。

投稿日時 - 2002-10-09 12:29:28

QNo.376888

困ってます

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

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) 'テーブル名を指定してレコードセットを作成する

こんな感じで出来ますよ。

投稿日時 - 2002-10-09 13:57:25

お礼

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

投稿日時 - 2002-10-09 22:52:36

ANo.4

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

Excelはちょっとわかりませんが、AccessのADO接続は2000からですので、
97では無理だと思います。

OFFICEをバージョンアップするか、DAOの勉強をするかですね・・・

投稿日時 - 2002-10-09 13:32:10

ANo.2

OSは何でしょう?Jet.OLEDB.3.51がインストールされていないと思われます。

OSやIEのバージョンによってはOLEDBのバージョンが異なるものが標準で入っていることのほうが多いので、バージョンの個所を変えれば接続できると思います。

私がよくやっている”インチキ”な確認方法です。
1.どこでもいいんで、拡張子が.udlのファイルを作成する(空でかまわない)。アイコンが変わればADO(MDAC)がインストールされている。

2.ファイルをダブルクリックで開くと”データリンクプロパティ”が表示されるので、プロバイダのタブを選択し、インストールされているJetプロバイダのバージョン番号を確認する。

ちなみに私のWin2000マシンでは、4.0が入っていました。

なお、Office97ではADOはインストールされません。
というか、Office97のあとに世に出てきたものなんで。

投稿日時 - 2002-10-09 12:48:35

お礼

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

投稿日時 - 2002-10-09 22:54:45

ANo.1

myADOcon.Open _
"Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb"

↑「Open」ではなく、「ConnectionString」ではないでしょうか?

上記の接続を確率してから、「myADOcon.Open」だと思います。

投稿日時 - 2002-10-09 12:36:10

あなたにオススメの質問