アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルからアクセスにADOで接続したいのですが
アクセスのファイルにはパスワードがかかっていて、
そのパスワードを指定して開こうとしてるのですが
パスワードが違います、と言うエラーになります。

でもパスワードは確実に合っています。
構文がおかしのでしょうか?

cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _
"C:\PW.accdb;" & _
"Jet OLEDB:Database Password=0000;"

パスワードがあっててもエラーになることはありますか?

ファイルのパスをでたらめに変えたら違うエラーが発生したので、ファイルのパスもあっています。

「エクセルからアクセスにADO PWエラー」の質問画像

A 回答 (2件)

Accessのプロセスが残ってしまうので


下記に変更を。
※Microsoft Office 14.0 Access Database Engine Object Library に参照設定が必要です
Sub da2()
Dim ac As Object
Dim db As DAO.database
Dim rs As DAO.Recordset

Set ac = CreateObject("Access.Application")
Set db = ac.DBEngine.OpenDatabase("e:\calendar.accdb", False, True, ";pwd=0000")
Set rs = db.OpenRecordset("select * from 休日")

Cells(1, 1).CopyFromRecordset rs '←ここも適宜修正を

rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
ac.Quit: Set ac = Nothing
End Sub
    • good
    • 0
この回答へのお礼

頂いた方法で無事接続できました。
ありがとうございました。勉強になりました。

お礼日時:2013/09/28 23:24

Access2010のaccdb なら


http://oshiete.goo.ne.jp/qa/7948601.html
かな?

上記リンク先のように以前の暗号化方法に変えてADOのままか
下記のようにするか
※Microsoft Office 14.0 Access Database Engine Object Library に参照設定が必要です
Sub da()
Dim db As DAO.database
Dim rs As DAO.Recordset

Set db = DBEngine.OpenDatabase("e:\calendar.accdb", False, True, ";pwd=0000")
Set rs = db.OpenRecordset("select * from 休日")

Cells(1, 1).CopyFromRecordset rs

db.Close
Set db = Nothing
End Sub

で、とりあえずレコードの取得は出来るかと思います。
良く調べてはいないのですが何故かADOだと・・・???。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

DAOを使えばできるのですね。
今すべてADOで作ってしまったので、書き換えようと思います。

ちなみに質問後検証してみたのですが
なぜか同じコードで、アクセスvbaで実行するとパスワード付きのファイルに接続することができました。
同じコードをエクセルvbaに張り付けて実行すると質問文と同じエラーになります。

エクセル側に原因がありそうです。

お礼日時:2013/09/28 23:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!