【发布时间】:2012-07-11 00:19:21
【问题描述】:
为了从 Excel 中的 web 服务获取数据,我创建了一个 excel 插件提供函数来获取它;用户只需要输入单元格:
=sendRequest("http://webservice.com")
我有 2 个 excel 文件以两种方法演示 sending request: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 object 的OnReadyStateChange 绑定,以将响应文本设置到单元格中。但是,它也会清除单元格的公式。
所以我的问题是如何在不改变公式的情况下改变单元格的显示文本?
我也欢迎在async方法下发送请求并获取返回值的另一种解决方案。
【问题讨论】:
-
我的回答有一个严重的缺点,绝对不应该被接受。请取消选中它。
标签: excel vba asynchronous xmlhttprequest