- ベストアンサー
エクセルからADOでアクセスする際のPWエラー
- エクセルからADOでアクセスする際に、パスワード認証エラーが発生する問題について質問です。
- パスワードは正しく入力しているにも関わらず、エラーが発生することがあります。構文などが正しいか確認しましたが、原因がわかりません。
- ファイルのパスも正しく指定しており、他の要素に問題がないことを確認しました。パスワードに関する設定や制約によってエラーが発生する可能性があるのでしょうか?
- みんなの回答 (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
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
Access2010のaccdb なら http://okwave.jp/qa/q7948601.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だと・・・???。
お礼
早速のご回答ありがとうございます。 DAOを使えばできるのですね。 今すべてADOで作ってしまったので、書き換えようと思います。 ちなみに質問後検証してみたのですが なぜか同じコードで、アクセスvbaで実行するとパスワード付きのファイルに接続することができました。 同じコードをエクセルvbaに張り付けて実行すると質問文と同じエラーになります。 エクセル側に原因がありそうです。
お礼
頂いた方法で無事接続できました。 ありがとうございました。勉強になりました。