我在具有彭博許可證的PC上的空白Excel 2007工作簿中運行宏。宏將Bloomberg函數插入到可以提取收益率曲線數據的sheet1中。一些附加功能的結果取決於第一個功能,即完成並正確顯示Bberg數據。當我瀏覽程序時,它只顯示'#N/A申請數據。 。 「。而不管查詢結果如何,不管我走得有多慢。由於某些函數依賴於字符串和數字字段結果的填充,程序在該代碼處遇到運行時錯誤。當我停止調試時 - 完全結束運行程序 - 所有應該填充的Bberg值隨即出現。我希望這些值在程序仍在運行時出現。直到Excel VBA宏結束爲止,彭博數據纔會填充
我試過使用DoEvents和Application.OnTime()的組合來返回控制權給操作系統,並讓程序等待數據更新很長時間,但都沒有成功。任何想法都會有所幫助。我的代碼如下。 wb是一個全球級工作簿,ws1是一個全球級工作表。
公用Sub Run_Me()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
Call Populate_Me
Call Format_Me
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
結束子
私人小組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
子硬編碼()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=BDP($A2,C$1)"
BloombergUI.RefreshAllStaticData
結束子
我喜歡你推薦使用WAPI,但我不認爲它解決了原來的問題,爲什麼電子表格BBG公式的不計算,直到宏停止運行。 – rex 2014-08-08 06:26:16