Добрый день. Имеется функция, которая обращается к определенному сайту (возвращает курсы валют Нацбанка Беларуси). С недавних пор сайт иногда начал падать, как следствие, Эксель при запуске макросов подвисает и не отвисает. Проблема в том, что в коде используется синхронный запрос. Проблему решит переделка его в асинхронный. Но я не понимаю, как это сделать) В общем, прошу помочь сделать как-нибудь так, чтобы запрос не выполнялся или прерывался, когда сайт недоступен (асинхронный запрос или другой способ). Код - в приложенном текстовом файле.
Добрый день. Имеется функция, которая обращается к определенному сайту (возвращает курсы валют Нацбанка Беларуси). С недавних пор сайт иногда начал падать, как следствие, Эксель при запуске макросов подвисает и не отвисает. Проблема в том, что в коде используется синхронный запрос. Проблему решит переделка его в асинхронный. Но я не понимаю, как это сделать) В общем, прошу помочь сделать как-нибудь так, чтобы запрос не выполнялся или прерывался, когда сайт недоступен (асинхронный запрос или другой способ). Код - в приложенном текстовом файле.Revengencer
В общем, да. В случае с лежачим сайтом вариант с пингованием срабатывает нормально (а предыдущий вариант - нет).
Добавил в начале функции: [vba]
Код
Dim oPingResult As Variant For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _ ("SELECT * FROM Win32_PingStatus WHERE Address = 'nbrb.by'") If IsObject(oPingResult) Then If oPingResult.StatusCode = 0 Then Exit Function End If End If Next
[/vba]
Правда, и работать функция стала медленно... Может, здесь тоже можно что-то сделать?
В общем, да. В случае с лежачим сайтом вариант с пингованием срабатывает нормально (а предыдущий вариант - нет).
Добавил в начале функции: [vba]
Код
Dim oPingResult As Variant For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _ ("SELECT * FROM Win32_PingStatus WHERE Address = 'nbrb.by'") If IsObject(oPingResult) Then If oPingResult.StatusCode = 0 Then Exit Function End If End If Next
[/vba]
Правда, и работать функция стала медленно... Может, здесь тоже можно что-то сделать?Revengencer
Сообщение отредактировал Revengencer - Понедельник, 24.07.2017, 14:02