0

我有一个 excel 输入工作簿 A 有一些基于内部工作表引用和Bloomberg 函数以及一些计算字段的输入。

我有一个需要从 A 检索信息的 excel 输出工作簿 B,但是,如果我在 B 的 vba 中打开工作簿 A,它不会更新链接信息,直到 VBA 完成调用。

A的输入示例,A包含sheet1,sheet2,sheet3我想要一个来自sheet1单元格(1,1)的单元格,单元格(1,1)的内容是sheet2!cells(2,1),这个sheets2!cells( 2,1) mite 是一个计算字段,基于另一个选项卡或一些Bloomberg函数调用输入的引用。

有没有办法我可以首先验证工作簿 A 中的所有链接,以便我的工作簿 B 可以检索所有更新的信息。

我努力了

Application.Workbooks.Open FileName:=path_array(tmp), UpdateLinks:=3       
Application.Calculate
Application.RTD.ThrottleInterval = 0
Application.Run "RefreshAllStaticData"
Application.Run "ConnectChartEvents"
Application.Run "RefreshData"
Application.Run "RefreshEntireWorkBook"
DoEvents

VBA Output looks like this:
A      B      C  D  E   F   G   H   I   J
4.4%  2.1%  2.2%    #VALUE! #VALUE! #VALUE! #VALUE! 11  5   #VALUE!
Manual like this:
A      B      C  D  E   F   G   H   I   J
4.4%  2.1%  2.2%    3.1%    4.2%    5.5%    3.4%    11  5   8.0%

强制一些计算通过,它使用 VBA 更新,但将返回 #Value!对于具有额外参考层的字段。如果我手动打开它,所有内容都会在不到一秒的时间内自动更新。一直在纠结为什么会有这样的区别。有没有办法让我为 VBA 计时,直到这个输入被更新。提前致谢

4

1 回答 1

2

我不熟悉彭博社,但这里有三件事。

您可以使用Application.OnTime延迟工作簿 B 中的执行。加载工作簿 A,然后使用 Application.OnTime 调用工作簿 B 中的第二个子程序,延迟一两秒,这应该允许工作簿 A 运行它在加载时运行的任何代码。

Application.RTD.RefreshData可能会有所帮助。

更具体到您的问题,这里的答案有帮助吗? 如何在 vba 中的 excel 中刷新/加载 RTD Bloomberg 函数 (BDH)

于 2013-08-27T16:35:29.730 回答