excel - 如何VBA发送异步XMLHTTP请求?

标签 excel vba asynchronous xmlhttprequest

为了从 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/

相关文章:

vb.net - 如何使用VB.net在Excel中选择单元格A3?

Python Pandas 比较两个数据框然后编辑

c# - 使用图像将 Gridview 导出到 Excel

asynchronous - 如何记录异步瘦+sinatra+ Rack 请求?

c++ - 是否所有 C++ 编译器都支持 async/await 关键字?

ios - 在dispatch_async期间UIActivityIndi​​catorView?

vba - 如何使用将条件作为字符串文字一部分的 countif 函数?

arrays - 第二次运行内存不足

vba - 根据Excel中的时间列更改日期列

Excel VBA,用于更改变量并粘贴其结果的 for 循环