Обработка ошибок в VBA при отсутствии соединения - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь собрать простой макрос, который выполняет следующие действия.

  • Разблокирует лист, защищенный паролем
  • Обновить запрос (Получает информацию из базы данных Access в сетидиск)
  • блокирует лист с паролем.

Я добавил обработчик ошибок, чтобы просто заблокировать электронную таблицу и вызвать окно сообщения.Однако этот обработчик ошибок не работает, когда нет подключения к Интернету.Он работает нормально, если есть сетевое соединение, и, например, я переместил базу данных Access в другое место, чем то, которое хранится в запросе.

Я получаю ошибку времени выполнения 1004: [DataFormat.Error] Ваш доступ к сети был прерван.Чтобы продолжить, закройте базу данных, и они снова откроют ее.

Что я делаю не так?

Sub RefreshItemTable()

    ActiveSheet.Unprotect Password:="password"

    Worksheets("Item List").Range("A1").ListObject.QueryTable.Refresh

    On Error GoTo connError

    DoEvents

    ActiveSheet.Protect Password:="password", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFiltering:=True

    Exit Sub

    connError:
    ActiveSheet.Protect Password:="password", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFiltering:=True
    MsgBox ("Unable to Connect")

End Sub

1 Ответ

0 голосов
/ 27 мая 2019

Сделайте оператор On Error первым выполнимым оператором в области действия процедуры.

При его наличии вы начнете обрабатывать ошибки только после того, как QueryTable.Refresh запустится (и не получится).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...