Как остановить запрос пароля с помощью DAO в Excel VBA и Access - PullRequest
0 голосов
/ 06 сентября 2018

Я использую DAO для выполнения запросов к базе данных Access, защищенной паролем, с помощью vba в Excel, иногда при запуске подпрограммы открывается экземпляр 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

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Чтобы устранить эту проблему, необходимо изменить ссылку в своей книге с DAO.36 на библиотеку объектов ядра базы данных Microsoft Office XX.0 Access.

Я проверил код с Access 2010 и Access 2013, и он отлично работает.

С наилучшими пожеланиями

0 голосов
/ 07 сентября 2018

В вашем коде нет ничего плохого. Протестировано с Access 2003 Backend. Может быть, если вы используете Access 2007 и более поздние версии, вы должны установить в параметрах БД обработку пароля для устаревшего.

С наилучшими пожеланиями

...