Excel2013のVBAで、ADO接続でAccess2013のデータベースを開こうとしたらこんなエラーが出ます。
プログラムは、こんな感じです。
[広告]
ADB.Provider = “Microsoft.Ace.OLEDB.12.0; ”
ADB.ConnectionString = “Data Source=” & gMDB & “;Jet OLEDB:Database Password=” & gPassWord & “;Persist Security Info=False;”
パスワードは間違っていないのに、これですか。
ググってググってググり倒した結果、やっとたどり着きました。
Franz Haidacher さんによれば
You are right Klar, ADO OLEDB drivers cannot connect to an Access 2010 database encrypted with the (new) default method, only with the legacy encryption method. There is nothing in support.microsoft.com, msdn.microsoft.com, nor in connectionstrings.com. I have searched everywhere on the web and there is no parameter to address this. Microsoft does not have any information about this anywhere, and their knowledge base returns everything except this issue. Obviously Microsoft forgot that people do need to connect via ADO to a protected database.”If technology doesn’t work for people, then it doesn’t work.”
Googleで翻訳すると
あなたが正しいクラーある、ADO、OLEDBドライバは、従来の暗号化方式で、(新)デフォルトの方法で暗号化されたアクセス2010データベースに接続できません。 support.microsoft.com、msdn.microsoft.comでは何もなく、またconnectionstrings.comではありません。私は、ウェブ上のどこで検索しましたし、これに対処するパラメータはありません。マイクロソフトは、このどこかについての情報を持っていないし、彼らの知識ベースは、この問題を除くすべてを返します。明らかにMicrosoftは、人々が保護されたデータベースへのADO経由で接続する必要がないことを忘れていました。
「技術は人々のために動作しない場合、それは動作しません。」
暗号化の方法が、VBAでは新しい形式で使用できないらしい。
要するにVBAが(高度なセキュリティ)に対応していなっいってことでした!
■補足
(MSDNより)
Persist Security Info の既定値は false です。すべての接続文字列には、この既定値を使用することをお勧めします。 Persist Security Info を true または yes に設定すると、ユーザー ID やパスワードなどのセキュリティ関連情報を、接続を開いた後にその接続から取得できます。 Persist Security Info を false または no に設定した場合、その情報を使って接続を開いた後で、セキュリティ情報が破棄されるため、信頼できないソースによってセキュリティ関連情報がアクセスされることを確実に防ぐことができます。
はいはい、ちゃ~んと false にしてますよ!
勝利! (^^)/
[広告]