【问题标题】:How to stop password prompt using DAO in Excel VBA and Access如何在 Excel VBA 和 Access 中使用 DAO 停止密码提示
【发布时间】:2018-09-06 13:11:16
【问题描述】:

我正在使用 DAO 在 Excel 中使用 vba 对受密码保护的 Access 数据库运行查询,有时在运行子程序时会打开一个 Access 实例以及一个询问数据库密码的窗口,而不是输入密码并按取消没有区别,查询仍然运行并显示输出,有没有办法停止访问打开并要求输入密码?

Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
Dim DB_Name As String
Dim cond As String
Dim pWord As String

Dim wb As Workbook: Set wb = ThisWorkbook
With wb

    On Error GoTo ErrHandler:

    clearRange.Value = ""

    DB_Name = DataBname()
    pWord = pwd()

    Set MyDatabase = DBEngine.Workspaces(0).OpenDatabase(DB_Name, False, True, pWord)
    Set MyQueryDef = MyDatabase.QueryDefs(queryName) 'Query Name

    Set MyRecordset = MyQueryDef.OpenRecordset 'Open the query
    pasteRange.CopyFromRecordset MyRecordset

    failRange.Value = False

My_Exit:

    If MyRecordset Is Nothing Then
        'Do Nothing
    Else
        MyRecordset.Close
        Set MyRecordset = Nothing
    End If
    If MyDatabase Is Nothing Then
        'Do Nothing
    Else
        MyDatabase.Close
        Set MyDatabase = Nothing
    End If

End With

Exit Sub

ErrHandler:

MsgBox Err.Description
failRange.Value = True
Resume My_Exit

End Sub

Function pwd() As String

pwd = "MS Access;PWD=password"

End Function

【问题讨论】:

    标签: excel vba ms-access dao


    【解决方案1】:

    要解决此问题,您必须将工作簿中的引用从 DAO.36 更改为 Microsoft Office XX.0 Access 数据库引擎对象库。

    我已经用Access 2010Access 2013 测试了代码,它运行良好。

    最好的问候

    【讨论】:

      【解决方案2】:

      您的代码没有任何问题。 使用 Access 2003 后端测试。 可能如果您使用 Access 2007 及更高版本,则必须在 DB 选项中设置对旧版密码的处理。

      最好的问候

      【讨论】:

      • 已将密码选项更改为 legacy 并重新加密,我还尝试创建一个新数据库并导入表和查询并使用 legacy 加密,它仍然没有工作。
      • 另一个答案解决了这个问题,但我也相信我会遇到你在这里陈述答案的问题,所以谢谢。
      猜你喜欢
      • 2014-08-18
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 2013-07-04
      相关资源
      最近更新 更多