Bloomberg ライセンスを持つ PC で、空白の Excel 2007 ワークブックでマクロを実行しています。マクロは、利回り曲線データを取得するブルームバーグ関数をシート 1 に挿入します。一部の追加関数の結果は、最初の関数が終了して Bberg データを正しく表示するかどうかに依存します。プログラムを実行すると、「#N/A Requesting Data」のみが表示されます。. .' どんなにゆっくり行っても、クエリの結果の代わりに。一部の関数は、入力される文字列および数値フィールドの結果に依存するため、プログラムはそのコードで実行時エラーを検出します。デバッグを停止すると (プログラムの実行を完全に終了すると)、入力されているはずのすべての Bberg 値が表示されます。プログラムの実行中にこれらの値が表示されるようにします。
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