Я использую объект 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?
Спасибо за помощь!