与受保护访问 accdb 文件的连接抛出 "Wrong Password"
Connection to protected access accdb file throws "Wrong Password"
我正在尝试连接到加密访问 2013 accdb 文件,该文件通过 excel 文件中的 adodb vba 过程使用旧式加密。
程序在 cn.open 处失败,我使用的是 office 64 位,错误消息:"It is not a valid Password"。
这个问题的特殊性是,密码是正确的,我可以通过Microsoft查询连接到Access DB就好了,我可以用下面的代码连接到另一个Access DB。但是当我尝试在 Excel 上使用它时,这个错误跳了进来,请注意,我在访问和 excel 上启用了相同的引用
vba 编辑。
我的问题是,如何通过 excel 从这个受密码保护的访问文件中提取数据,我尝试的每一种方法在输入密码后都失败了。
VBA 程序
Sub LDBViewer2010()
'Reference Microsoft ActiveX Data Objects for this code to work
Dim cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Const conDatabase As String = "E:.accdb"
' Open connection to Access backend
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & conDatabase & ";Persist Security Info=False;Jet OLEDB:Database Password='asd123';"
' Open recordset
Set Rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
'Output the field list
Debug.Print Rs.Fields(0).Name, "|", Rs.Fields(1).Name, "|", Rs.Fields(2).Name, "|", Rs.Fields(3).Name
'Loop through users recordset of users in database.
While Not Rs.EOF
Debug.Print Trim(Rs.Fields(0)), "|", Trim(Rs.Fields(1)), "|", Trim(Rs.Fields(2)), "|", Trim(Rs.Fields(3))
Rs.MoveNext
Wend
' Close
If Rs.State <> adStateClosed Then Rs.Close
Set Rs = Nothing
Set cn = Nothing
End Sub
非常感谢您的宝贵时间和帮助。
-编辑 1-
在 Access 中使用 debug.print CurrentProject.Connection.ConnectionString:
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=E:1.accdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database=C:\Users\User\AppData\Roaming\Microsoft\Access\System.mdw;Jet OLEDB:Registry Path=Software\Microsoft\Office.0\Access\Access Connectivity Engine;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=True;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False
解决了创建新访问文件并进行进一步测试的问题。以下是我的发现。
尽管我使用遗传加密创建了我的数据库,但无论使用哪种方法,密码总是失败。我尝试使用相同的密码解密和重新加密,现在 excel 连接正常。
请注意,只有 excel 连接有问题,我可以从另一个访问数据库顺利连接。
感谢您的想法和贡献,他们帮助我找到了正确的答案。
我正在尝试连接到加密访问 2013 accdb 文件,该文件通过 excel 文件中的 adodb vba 过程使用旧式加密。
程序在 cn.open 处失败,我使用的是 office 64 位,错误消息:"It is not a valid Password"。 这个问题的特殊性是,密码是正确的,我可以通过Microsoft查询连接到Access DB就好了,我可以用下面的代码连接到另一个Access DB。但是当我尝试在 Excel 上使用它时,这个错误跳了进来,请注意,我在访问和 excel 上启用了相同的引用 vba 编辑。
我的问题是,如何通过 excel 从这个受密码保护的访问文件中提取数据,我尝试的每一种方法在输入密码后都失败了。
VBA 程序
Sub LDBViewer2010()
'Reference Microsoft ActiveX Data Objects for this code to work
Dim cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Const conDatabase As String = "E:.accdb"
' Open connection to Access backend
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & conDatabase & ";Persist Security Info=False;Jet OLEDB:Database Password='asd123';"
' Open recordset
Set Rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
'Output the field list
Debug.Print Rs.Fields(0).Name, "|", Rs.Fields(1).Name, "|", Rs.Fields(2).Name, "|", Rs.Fields(3).Name
'Loop through users recordset of users in database.
While Not Rs.EOF
Debug.Print Trim(Rs.Fields(0)), "|", Trim(Rs.Fields(1)), "|", Trim(Rs.Fields(2)), "|", Trim(Rs.Fields(3))
Rs.MoveNext
Wend
' Close
If Rs.State <> adStateClosed Then Rs.Close
Set Rs = Nothing
Set cn = Nothing
End Sub
非常感谢您的宝贵时间和帮助。
-编辑 1-
在 Access 中使用 debug.print CurrentProject.Connection.ConnectionString:
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=E:1.accdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database=C:\Users\User\AppData\Roaming\Microsoft\Access\System.mdw;Jet OLEDB:Registry Path=Software\Microsoft\Office.0\Access\Access Connectivity Engine;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=True;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False
解决了创建新访问文件并进行进一步测试的问题。以下是我的发现。
尽管我使用遗传加密创建了我的数据库,但无论使用哪种方法,密码总是失败。我尝试使用相同的密码解密和重新加密,现在 excel 连接正常。
请注意,只有 excel 连接有问题,我可以从另一个访问数据库顺利连接。
感谢您的想法和贡献,他们帮助我找到了正确的答案。