Как перехватить ошибку времени ожидания запроса VBA?

Я использую объект MSXML2.ServerXMLHTTP60 для отправки запроса в веб-службу; с помощью этого объекта я могу ускорить загрузку данных асинхронным методом и избежать зависаний экрана Excel(не отвечает). Но у меня все еще есть проблема, когда ответ веб-службы в течение длительного времени, вне настройки тайм-аута ServerXMLHTTP60, функция запроса была молчаливой, я не могу поймать ошибку тайм-аута. В другой вопрос @osknows предлагает использовать xmlhttp status = 408для обнаружения ошибки тайм-аута, но у меня это не работает.

Я подготовил тестовый файл, вы можете скачать здесь . Откройте исходный код VBA, нажав Atl + F8, вы увидите модуль класса CXMLHTTPHandler, который я скопировал из этого руководства

    If m_xmlHttp.readyState = 4 Then
        If m_xmlHttp.Status = 200 Then
            MsgBox m_xmlHttp.responseText
        ElseIf m_xmlHttp.Status = 408 Then 'Debug never run to here?
            MsgBox "Request timeout"
        Else
         'Error happened
        End If
    End If

. Как перехватить ошибку тайм-аута запроса VBA?

Спасибо за помощь!

10
задан ashleedawg 11 July 2018 в 12:21
поделиться