Excel链接(使用某些bloomberg函数作为输入)在VBA完成之前不会更新

时间:2013-08-27 16:25:56

标签: excel vba bloomberg

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

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

A的输入示例,A包含sheet1,sheet2,sheet3         我想要一个来自sheet1单元格(1,1)的单元格,单元格(1,1)的内容是sheet2!单元格(2,1),这个sheet2!单元格(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计时。提前致谢

1 个答案:

答案 0 :(得分:2)

我不熟悉布隆伯格,但这里有三件事。

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

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

更具体到您的问题,这里的答案有帮助吗? How to refresh/load RTD Bloomberg function (BDH) in excel in vba