我正在尝试解决我在使用适用于 Excel 的 Bloomberg 插件时遇到的问题。每天我都会为 500 多只股票填充 31 天的历史价格数据。
$A$K3 = "ACE US EQUITY" $AL$3 = "=BDH(AK3,"PX_LAST",$D$1,$C$1,"DTS=h","dir=h")" $C$1 = " =WORKDAY(TODAY(),0)" $D$1 = "=BAddPeriods(C1,"NumberOfPeriods=-31","Per=wd","CDR=#A")"
应该发生的是,在 $AL$3:$BQ$3 中会有 31 天的价格。
我将工作簿保持打开状态,因为即使 Bloomberg 可执行文件未运行,Bloomberg DDE 会话仍保持打开状态 3 天。
有时没有问题,第二天上班时,数据向前移动了一天。其他时候,大部分数据都丢失了,我不得不选择并刷新每个 $AL$_ 字段。问题在于,由于某种原因,刷新是同步发生的,我认为这会对 DDE 连接和/或 Excel 造成严重破坏。导致更新缓慢/无更新。此外,如果我刷新整个工作表,一些公式将被静态数据覆盖!
我想做的是创建一个宏,它将:
1) 清除 $AL$ :$BQ $ & $BS$ :$CX $中的所有数据
2) 设置$AL$_的值 = "=BDH(AK$_,"PX_LAST",$D$1,$C$1,"DTS=h","dir=h")"
3) 等到数据填充到 $AL$ :$BQ$之后再转到 $AL$(+1):$BQ$(+1); 如果 $AM$_ 有一个值,那么很可能数据已填充到该行中。
4) 然后当 $AL$ :$BQ$完成后,对 $BS$ :$CX$执行相同的操作
一个多月以来,我一直在等待彭博的支持来满足这一要求,但没有任何结果。
我没有足够的经验来做这件事。
我在下面有一小段代码,我使用记录器创建了这些代码:
Sub PopulateData()
'
' PopulateData Macro
'
'
Range("AL2:BQ2").Select
Selection.ClearContents
Range("AL2").Select
ActiveCell.FormulaR1C1 = _
"=BDH(RC[-1],""PX_LAST"",R1C4,R1C3,""DTS=h"",""dir=h"")"
Range("AL2").Select
End Sub
虽然我在录制时选择了刷新按钮,但未录制此操作。谢谢你的关注。