「パスワードが正しくありません」Excel2013/Access2013

PC9_3300


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では新しい形式で使用できないらしい。

PC9_3301

要するにVBAが(高度なセキュリティ)に対応していなっいってことでした!

 

■補足
(MSDNより)
Persist Security Info
の既定値は false です。すべての接続文字列には、この既定値を使用することをお勧めします。 Persist Security Infotrue または yes に設定すると、ユーザー ID やパスワードなどのセキュリティ関連情報を、接続を開いた後にその接続から取得できます。 Persist Security Infofalse または no に設定した場合、その情報を使って接続を開いた後で、セキュリティ情報が破棄されるため、信頼できないソースによってセキュリティ関連情報がアクセスされることを確実に防ぐことができます。   

はいはい、ちゃ~んと false にしてますよ!        


勝利! (^^)/


[広告]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Optionally add an image (JPEG only)