我正在尝试将Bloomberg历史数据直接导入VBA中的数组:
Dim data As Variant
ticker = "UKGRABIQ Index"
start_date = "12/31/1998"
end_date = "3/31/2015"
data = Application.WorksheetFunction.BDH(ticker, "PX_LAST", start_date, end_date, "ARRAY=TRUE")
Range("A1", "A66").Value = data
最终目标是能够对该数据进行大量操作,而不是让它出现在工作表中。
提前感谢您的帮助。
答案 0 :(得分:2)
BDH()函数由Bloomberg加载项提供:它不是本机Excel工作表函数,因此Application.WorksheetFunction集合不具备它。
您仍然可以或多或少地使用BDH:Application.Evaluate()方法执行您尝试使用Application.WorksheetFunction执行的操作。
以下是文档:https://msdn.microsoft.com/en-us/library/office/ff193019.aspx
但是,我建议您浏览VBA可用的ActiveX对象,而不是尝试在VBA代码中模拟工作表计算。
您需要转到VBA IDE菜单,工具>引用...并浏览Bloomberg Active-X数据控件,通常位于C:\ blp \ API \ ActiveX \ blpdatax.dll
此代码段应该可以使用,但我还没有在我当前的机器上对其进行测试:如果出现任何错误,请探索使用(或删除)数组中的代码,字段和日期。
Dim arrData As Variant Dim objDataX As BLP_DATA_CTRLLib.BlpData
Set objDataX As BLP_DATA_CTRLLib.BlpData
arrData = objDataX.BLPGetHistoricalData( Array(ticker), "PX_LAST", start_date, end_date )
您需要检查返回的数组:您不会总是得到一个简单的2D网格'从Bloomberg来看,它有时是嵌套数组的结构。