2014-09-12 90 views
0

我有一个带密码的访问数据库(“1234”),我想连接vba中的excel文件来提取数据。如何将excel与vba的锁定访问数据库连接起来?

如果我取消保护访问文件,我可以用的东西连接自己这样

path = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Persist Security Info=False;" 

Set Cn = New ADODB.Connection 
Cn.Open cs 

和它的作品,但是当我保护访问文件用密码我不知道该怎么办的连接。我已经试过这

Ruta = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ruta & ";Persist Security Info=False;" & "Password=1234;" 

Set Cn = New ADODB.Connection 
Cn.Open cs 

但这个错误让我停止“Cn.Open CS”线:运行时错误“-2147217843(80040E4D)”

你能帮助我吗?非常感谢。

+0

用户名丢失? – Margus 2014-09-12 12:31:05

+0

没有用户名,我已经锁定数据库在独占模式下打开它并使用密码进行加密,在Access文件菜单中输入密码,没有别的。 – Monchou2 2014-09-12 12:35:33

回答

0

我发现这个问题的答案:Excel ADODB VBA error msg 'Not a Valid Password'

在Access 2010中的加密方法改变数据库的密码,并在ADO提供商的“喷气机OLEDB:数据库密码”的关键字没有出现新的方法来工作。在这里,我必须删除密码,进入Access->文件 - >选项 - >客户端设置 - >高级,然后选中“使用传统加密”,然后重新创建密码。 我不知道是否有任何新的OLE DB连接字符串的关键词为ACE提供商还是使用ADO.NET

由于bibadia用户

1

有担保或密码保护时也会出现此问题Access数据库使用Properity“数据库密码” 例如:

cs = "provider=Microsoft.ACE.OLEDB.12.0;" & _ 
    "Data Source=" & App.Path & "\myAccessFile.accdb;" & _ 
    "Jet OLEDB:Database Password= 1234" 

这里“App.Path”是您的应用程序放在你可以把然而ACCESS数据库,如果有一个L尺寸指定ocation然后在格式 e.g用它代替App.Path:

Ruta = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=" & Ruta & ";" & _ 
     "Jet OLEDB:Database Password= 1234" 

如果西港岛线不能正常工作,那么请尝试其他Jet提供

cs = "provider=Microsoft.jet.oledb.4.0;" & _ 
相关问题