我正在使用excel做一些数据分析工作。
情况是这样的:
我使用一些excel插件组件从远程站点获取数据。
例如,将=get_the_latest_data(ID)
放在A1
中,则将调用此函数,并将ID的数据填充在A2
至A11
中。
我的目标是
for each id in id_array
sheet1.range("a1") = get_the_latest_data(id)
create a new sheet named id
save data from a2 to a11 to thi new sheet
next
我的问题是
get_the_latest_data
函数需要一些时间才能从远程获取所有数据。因此,在我的代码中,新工作表无法获得正确的结果。我尝试使用application.wait,然后再将数据从sheet1复制到新工作表。但这没用。
从远程获取所需数据后,有什么方法可以确保将数据复制到新工作表吗?顺便说一句,我无权访问
get_the_latest_data
的源代码。 最佳答案
通常,VBA仅在完全完成前一步之后才执行下一步。除非该调用触发某些后台操作(例如,刷新启用了“背景刷新”的数据连接)。
您可以执行以下操作来解决此问题:
禁用后台刷新:如果您查看连接的属性,请取消选择“启用后台刷新”
等待直到刷新完成,然后执行特定于数据查询的检查:通过以下方式修改代码:
Range(“ A11”)。Clear'启用检查
subCallToTriggerDataLoadHere
While Range(“ A11”)。Value“”'或其他任何特定检查,以确保刷新完成
活动事件
温德
...
使用查询的AfterRefresh事件:See this post for details