使用Excel VBA调用Bloomberg BQL查询

3

由于种种复杂原因,我想要在VBA中自动调用Bloomi BQL查询。

我正在通过VBA脚本更改Excel表格中的BQL.Query公式输入,并调用Application.Calculate运行查询。显示屏幕上会变成“N/A Requesting Data ...”。在VBA中等待一段时间(使用Wait()函数),甚至加入DoEvents()函数增强稳定性。

While rngOS.Value < 0
   Application.Calculate
   Sleep 2000   'Waits 2000 ms
   DoEvents
Wend

问题是,BQL.Query没有返回任何结果。只有当我结束VBA脚本时,实际数据才会返回到工作表中。

理想情况下,我希望有一种同步的方式,只需从VBA调用BQL.Query并等待返回即可。

欢迎提出所有建议!


Code should be ... - DS_London
1个回答

3

这里有一个指针:https://stackoverflow.com/a/33667663/829571

简要来说:安排你的函数稍后运行,检查BQL是否完成(例如通过计算“N / A请求数据”的数量),如果未完成,请再次安排函数稍后运行等等。一旦N/A的数量降至0,您就知道更新已经完成,可以继续执行代码的其余部分。


谢谢assylias!递归地安排相同的宏运行,并在其中返回控制权给Excel的方法很好地工作...我可以启动它,等它完成后再回来。 - DS_London
1
更新。最终,我使用了一个VBA包装器来请求数据,通过同步BDH和BDP等效的Bloomi COM API。 - DS_London
@DS_London 如果您不需要BQL,那确实更加健壮。 - assylias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接