VBA如何缓存xmlhttp请求返回值?

Posted

技术标签:

【中文标题】VBA如何缓存xmlhttp请求返回值?【英文标题】:How to VBA caching xmlhttp request returned value? 【发布时间】:2012-03-05 05:51:03 【问题描述】:

我想缓存xmlhttp request 的返回值,以免在调用数百个这样的请求时等待太久。

我曾尝试在 Array/Collection 中缓存值,但是当 Excel 关闭并稍后重新打开时,所有缓存都丢失了!

更新

我在 100 个单元格中调用 myDemo() 100 次。这是它的 VBA 代码

Function myDemo (text)
    url = "http://demo.namgivu.com/FIP/index.php?r=excelFunction/onSO00&text=" & text
    url = url & "&currentTime=" & Now

    'Call service
    Set xmlHttp = CreateObject("MSXML2.xmlhttp")
    xmlHttp.Open "GET", url, False
    xmlHttp.Send
    result = (xmlHttp.responseText)

    myDemo = result
End Function

这里是my excel file。 Excel打开的时候一定要等这么久...

【问题讨论】:

由于您希望控制何时刷新结果,因此您可能不应该使用 UDF。将其切换为仅直接更新单元格值的子项。 演示文件中的某些内容使 UDF 不稳定。因此,每次编辑或更新都会导致使用重新计算 UDF 的每个公式。尝试使用 CTRL + SHIFT + ALT + F9 进行依赖关系树重建。 【参考方案1】:

当 Excel 关闭时,您不能将项目保留在变量中。要保留数据,您需要将其写入某个地方,无论是工作表、数据库还是其他地方,很大程度上取决于您在做什么。当您使用 UDF 时,您不能在公式顶部复制 > 粘贴特殊 > 值以创建静态值吗?

【讨论】:

以上是关于VBA如何缓存xmlhttp请求返回值?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用VBA或网络爬虫程序抓取网站数据

如何知道xmlhttp的responsetext返回值是啥?

使用 vba 和 xmlhttp 自动提交网站上的帖子表单

VBA XMLHTTP 清除身份验证?

异步请求相关知识点xmlHttp.status的值(HTTP状态表)

xmlHttp.status的值(HTTP状态表)