为了从 Excel 中的网络服务获取数据,我创建了一个 Excel 插件提供函数来获取它;用户只需在单元格中输入:
=sendRequest("http://webservice.com")
我有2个excel文件来演示两种方法的发送请求
: 1. synchronous和 2.asynchronous
在sync
方法中,该函数可以正常发送请求和获取数据。但是,如果我们有 100、200 个单元格调用它,Excel 将花费大量时间等待;这也导致 Exel 不响应。
我当前的解决方案是使用async
方法作为below code
Public Function sendAsyncRequest(URL)
'other statement
' Get some stuff asynchronously.
xmlHttpRequest.Open "GET", URL, True
xmlHttpRequest.send
sendAsyncRequest = xmlHttpRequest.responseText
End Function
但单元格的值始终为零 0 而不是响应文本。
我必须使用我的处理程序类将其与 xmlHttpRequest 对象
的 OnReadyStateChange
绑定(bind),以将响应文本设置到单元格中。但随后,它也会清除单元格的公式。
所以我的问题是如何更改单元格的显示文本而不更改其公式?
我也欢迎另一种在async
方法下发送请求并获取返回值的解决方案。
最佳答案
正如该解决方案的缺点所述 here ,获取函数异步返回值的正确方法是 1) 缓存 您的请求的 url => 返回值
到集合/字典,然后 2) <强>刷新你的公式
关于excel - 如何VBA发送异步XMLHTTP请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431677/