Как VBA отправляет асинхронный XMLHTTP-запрос?
Чтобы получить данные из веб-службы в Excel, я создал функцию предоставления надстройки Excel для ее получения; пользователю просто нужно ввести в ячейку:
=sendRequest("http://webservice.com")
У меня есть 2 файла Excel, чтобы продемонстрироватьsending request
двумя способами: 1.синхронный и 2.асинхронный
Вsync
Метод, функция может отправлять запрос и получать данные в обычном режиме. Но если мыhave 100, 200 cells что называется, Excel займет огромное количество времени ожидания; что также делает Exel бытьnot respoding.
Мое текущее решение для этого заключается в использованииasync
метод каккод ниже
Public Function sendAsyncRequest(URL)
'other statement
' Get some stuff asynchronously.
xmlHttpRequest.Open "GET", URL, True
xmlHttpRequest.send
sendAsyncRequest = xmlHttpRequest.responseText
End Function
Но значение ячейки всегда равно нулю 0 вместо текста ответа.
Я должен использовать свой класс обработчика, чтобы связать его сOnReadyStateChange
изxmlHttpRequest object
установить текст ответа в ячейку. Но затем он также очищает клетки ». формулы.
Итак, мой вопросHow to change the display text of cell without changing its formula?
Я также приветствую другое решение, чтобы отправить запрос и получить возвращаемое значение вasync
метод.