Я запускаю макрос в пустой книге Excel 2007 на ПК с лицензией Bloomberg. Макрос вставляет функции Bloomberg в sheet1, которые извлекают данные кривой доходности. Результаты некоторых дополнительных функций зависят от завершения первых функций и правильного отображения данных Бберга. Когда я прохожу программу, она отображает только "# N/A Requesting Data"., ". вместо результатов запроса, независимо от того, насколько медленно я иду. Поскольку некоторые функции зависят от заполнения строковых и числовых полей, программа обнаруживает ошибку во время выполнения в этом коде. Когда я прекращаю отладку - полностью заканчиваю запуск программы - появляются все значения Бберга, которые должны были заполниться. Я хочу, чтобы эти значения отображались во время работы программы.
Я пытался использовать комбинацию 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 HardCode()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=BDP($A2,C$1)"
BloombergUI.RefreshAllStaticData
End Sub