Estoy ejecutando una macro en un libro de Excel 2007 en blanco en una PC con licencia de Bloomberg. La macro inserta las funciones de Bloomberg en la hoja 1 que extrae los datos de la curva de rendimiento. Los resultados de algunas funciones adicionales dependen de que las primeras funciones terminen y muestren correctamente los datos Bberg. Cuando paso por el programa, solo muestra '# N/A Requesting Data'. . . ' en lugar de los resultados de la consulta, no importa lo lento que voy. Debido a que algunas de las funciones dependen de que se llenen los resultados de cadena y de campo numérico, el programa alcanza un error de tiempo de ejecución en ese código. Cuando dejo de depurar, terminando de ejecutar el programa, aparecen todos los valores Bberg que deberían haberse llenado. Quiero que estos valores aparezcan mientras el programa todavía se está ejecutando.Los datos de Bloomberg no se completan hasta que finaliza la macro de Excel VBA
He intentado utilizar una combinación de DoEvents y Application.OnTime() para devolver el control al sistema operativo y hacer que el programa espere mucho tiempo para la actualización de datos, pero ninguno de los dos funcionó. Cualquier idea sería útil. Mi código está abajo. wb es un libro de trabajo de nivel global y ws1 es una hoja de trabajo de nivel global.
Public Sub Run_Me()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
Call Populate_Me
Call Format_Me
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub
Private Sub Populate_Me()
Dim lRow_PM As Integer
Dim xlCalc As XlCalculation
Set wb = ThisWorkbook
Set ws1 = wb.Sheets(1)
'clear out any values from previous day
If wb.Sheets(ws1.Name).Range("A1").Value <> "" Then
wb.Sheets(ws1.Name).Select
Selection.ClearContents
End If
xlCalc = Application.Calculation
Application.Calculation = xlCalculationAutomatic
Range("A1").Value = "F5"
Range("B1").Value = "Term"
Range("C1").Value = "PX LAST"
Range("A2").Select
ActiveCell.FormulaR1C1 = "=BDS(""YCCF0005 Index"",""CURVE_MEMBERS"",""cols=1;rows=15"")"
BloombergUI.RefreshAllStaticData
Range("B2").Select
ActiveCell.FormulaR1C1 = "=BDS(""YCCF0005 Index"",""CURVE_TERMS"",""cols=1;rows=15"")"
BloombergUI.RefreshAllStaticData
Application.OnTime Now + TimeValue("00:00:10"), "HardCode"
'******more code*******'
End Sub
Sub codificar()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=BDP($A2,C$1)"
BloombergUI.RefreshAllStaticData
End Sub
me gusta que me recomienda el uso de la WAPI, pero no creo que se refiere a la pregunta original de por qué hoja de cálculo de la fórmula de BBG no calculan hasta que las macros dejan de funcionar. – rex