You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bloomberg实时更新切换宏失效求助:BFXFORWARD函数无法刷新

问题分析与解决办法

你的宏逻辑完全搞反了——SuspendBloombergRealtimeData True是暂停实时更新,这时候刷新工作簿,BFXFORWARD函数根本没法连接Bloomberg获取数据,自然一直卡在#N/A Requesting Data...。

正确的逻辑应该是先开启实时更新,等数据刷新完成后再暂停,修正后的VBA代码如下:

Sub RefreshBFXForwardData()
    ' 1. 恢复Bloomberg实时更新(确保处于启用状态)
    Application.Run "SuspendBloombergRealtimeData", False
    
    ' 2. 刷新工作簿
    Application.Run "RefreshEntireWorkbook"
    
    ' 3. 等待数据加载(可根据实际响应时间调整秒数,比如改成10秒)
    Application.Wait Now + TimeValue("00:00:08")
    
    ' 或者用更可靠的循环等待(直到目标单元格不再显示#N/A,最多等20秒)
    ' Dim startTime As Date
    ' startTime = Now
    ' Do While Range("A1").Value = "#N/A Requesting Data..." And Now < startTime + TimeValue("00:00:20")
    '     DoEvents ' 让Excel响应Bloomberg的回调
    ' Loop
    
    ' 4. 暂停实时更新,符合IT限制要求
    Application.Run "SuspendBloombergRealtimeData", True
End Sub

关键注意点:

  • 确认SuspendBloombergRealtimeData的参数:False是恢复实时更新,True是暂停,别搞反。
  • 等待时间不能太短:Bloomberg获取非标准日期的远期数据可能需要几秒,默认5秒不够就调长到8-10秒。
  • 循环等待比固定Wait更可靠:如果用循环检查目标单元格(把示例里的A1改成你写公式的单元格位置),可以避免等待过长或不足的问题,DoEvents能让Excel及时处理Bloomberg的数据回调。
  • 若整个工作簿刷新太耗时,可以只刷新包含BFXFORWARD的区域,比如用Range("你的公式区域").Refresh替换RefreshEntireWorkbook,进一步缩短实时更新开启的时间。

内容的提问来源于stack exchange,提问作者JaminInC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:15:10