【问题标题】:How to connect Excel with locked Access database using VBA?如何使用 VBA 将 Excel 与锁定的 Access 数据库连接?
【发布时间】:2020-07-02 15:32:01
【问题描述】:

我有一个带密码(“1234”)的 Access 数据库,我想使用 VBA 连接一个 Excel 文件来提取数据。

如果我取消对 Access 文件的保护,我可以使用类似的东西进行连接

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

当我使用密码保护 Access 文件时,我不知道如何进行连接。

我试过了

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)'

【问题讨论】:

  • 用户名丢失?
  • 没有用户名,我已经锁定了数据库,以独占模式打开它并用密码加密,在Access的文件菜单中,输入密码,没有别的。

标签: excel vba ms-access connect password-protection


【解决方案1】:

我在这个问题中找到了答案:Excel ADODB VBA error msg 'Not a Valid Password'

在 Access 2010 中,数据库密码的加密方法已更改,并且 ADO 提供程序的“Jet OLEDB:Database Password”关键字似乎不适用于新方法。在这里,我必须删除密码,进入 Access->File->Options->Client Settings->Advanced 并选中“use legacy encryption”,然后重新创建密码。 不知道ACE提供者是否有新的OLE DB连接字符串关键字,或者使用ADO.NET时是否也会出现这个问题

感谢bibadia用户

【讨论】:

    【解决方案2】:

    对于安全或受密码保护的 Access 数据库,请使用属性“数据库密码” 例如:

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

    这里的“App.Path”用于放置您的应用程序的位置,您可以放置​​ Access 数据库,但是如果有指定的位置,则将 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;" & _
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多