Excel ADODB VBA 错误消息"不是有效的密码"



我正试图通过Excel VBA打开一个到受密码保护的AccessDB的连接。

我正在使用以下连接字符串

conn.Provider = "Microsoft.ACE.OLEDB.12.0"
conn.ConnectionString = "Data Source=dbPath; Jet OLEDB:Database Password=pwd;"

其中dbPath是accdb/mdb文件的路径,pwd是数据库文件的密码。密码是绝对正确的,但我总是收到错误"不是有效密码"。有人能给我指引一下吗??-斯里兰卡。

其他信息:我使用的是office 2010,并将此数据库保存为mdb(2003)文件(我也尝试使用accdb-extn保存此文件)。当我试图为数据库设置密码时,它显示消息"使用块密码加密与行级锁定不兼容。行级锁定将被忽略。"这与VBA中的错误消息有关吗?

在Access 2010中,数据库密码的加密方法发生了更改,ADO提供程序的"Jet OLEDB:数据库密码"关键字似乎不适用于新方法。在这里,我必须删除密码,进入Access->File->Options->Client Settings->Advanced并选中"use legacy encryption",然后重新创建密码。

我不知道ACE提供程序是否有任何新的OLE DB连接字符串关键字,也不知道使用ADO.NET 时是否也会出现此问题

请使用以下

conStr=";提供商=Microsoft.ACE.OLEDB.16.0;数据源=C:\Users\csub1\Desktop\empdata.xlsx;持久安全信息=False;Jet OLEDB:数据库密码=pass@123;扩展属性='12.0除外;HDR=是;';Jet OLEDB:系统数据库=C:\Users\csub1\AppData\Roaming\Microsoft\Access\System.mdw"

请找到System.mdw文件,并在系统数据库下给出它。在提供密码时,请使用Jet OLEDB:数据库密码。

经过大量研究,它奏效了。

或者您可以这样做。

    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";Jet OLEDB:Database Password=" & pwd

我注册到stackoverflow只是为了感谢MNS CHANDRACEKARAN!由于我刚刚注册,我不能标记为答案并将其作为我的答案。在谷歌上搜索了很长时间都没有成功后,我尝试了他的建议,结果对我很有效。我没有包括他的连接字符串的扩展属性和系统数据库部分,并且能够从Access前端数据库FE(前端)连接到其BE(后端),然后通过连接对象创建一个新表。我很高兴收到帮助,为此我的代码如下:

...
    Dim conn As New ADODB.Connection
    Dim constr As String
    Dim sqlstr as String
    
    constr = "provider=Microsoft.ACE.OLEDB.16.0;data source=\yournetworkpathyourfilename.accdb;Persist Security Info=False;Jet OLEDB:Database Password=yourpassword;'"
    
    conn.Open constr, "", "", -1
    
    sqlstr = "CREATE TABLE TableName (TblField1name TEXT(20) NOT NULL, TblField2name BIT ) "
    conn.Execute sqlstr
    conn.Close
...

由于在谷歌搜索时,我发现密码保护数据库(比如说"旧方法")和加密数据库之间存在一些混淆,我想指定此解决方案适用于2007-2016 Access加密数据库。如果不是这种情况,您可能会发现引用dao数据库对象的opendatabase方法更容易。

最新更新