我有一个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计时。提前致谢
答案 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