Я запускаю макрос в пустой книге Excel 2007 на ПК с лицензией Bloomberg. Макрос вставляет Bloomberg функции в лист1, которые вытаскивают данные кривой доходности. Результаты некоторых дополнительных функций зависят от первых функций, заканчивающих и правильно отображающих данные Bberg. Когда я перехожу через программу, он отображает только «# N/A Requesting Data». , «. вместо результатов запроса, независимо от того, как медленно я иду. Поскольку некоторые функции зависят от заполняемых результатов строковых и числовых полей, программа обращается к ошибке во время выполнения этого кода. Когда я прекращаю отладку - полностью заканчивая запуск программы, тогда появляются все значения Bberg, которые должны были заполняться. Я хочу, чтобы эти значения отображались во время работы программы.Данные Bloomberg не заполняются до тех пор, пока макрос Excel VBA не завершится
Я попытался использовать комбинацию DoEvents и Application.OnTime(), чтобы вернуть управление операционной системе и заставить программу ждать долгое время для обновления данных, но ни одна из них не работала. Любые идеи были бы полезны. Мой код ниже. wb - это книга на глобальном уровне и ws1 - это рабочий лист глобального уровня.
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 жёстко()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=BDP($A2,C$1)"
BloombergUI.RefreshAllStaticData
End Sub
Мне нравится, что вы рекомендуете использовать WAPI, но я не думаю, что он затрагивает оригинальный вопрос, почему таблица BBG этой формулы не вычислять, пока макросы не остановятся. – rex