Excel BBG公式不刷新

时间:2018-10-02 00:45:19

标签: excel-vba refresh bloomberg

我正在尝试编写一个基本脚本来打开另一个文件,刷新该文件中的数据,将该更新文件另存为值(不是公式),然后关闭包含公式的最初打开的文件而不保存。我的问题是,直到宏完成并且“更新的”文件将自身保存下来之后,该文件才真正提取请求的公式。换句话说,公式开始刷新,显然永远不会完成刷新,然后使用“#N / A Requesting Data ...”字符串(而不是实际数据)对其进行复制/粘贴。我已经看到了许多与此类似的问题,但是我还没有看到一个可以定义为什么该问题首先存在的问题。我尝试过在不同的子目录中运行刷新和保存,并尝试了多种不同的方法来等待公式完成刷新,但无济于事。例如:

'ATTEMPT 1
'Application.Calculate
'If Not Application.CalculationState = xlDone Then
'   DoEvents
'End If

'ATTEMPT 2
'Do: DoEvents: Loop While Application.CalculationState = xlCalculating

'ATTEMPT 3
'Do Until ActiveSheet.CalculationState = xlDone
'   DoEvents
'Loop

以下是启动文件打开后运行的代码:

Sub Auto_Open()

Call Refresh

'COPY PASTE VALUES
ActiveSheet.Cells.Copy

'COPY UPDATED SHEET TO NEW BOOK & SAVE AS .XLS
Workbooks.Add
With ActiveSheet
.Cells.PasteSpecial xlValues
.Cells.PasteSpecial xlFormats
End With
Application.CutCopyMode = False
ActiveWorkbook.SaveAs (NewBook & Format(Now(), "DD-MMM-YYYY hh mm AMPM") & ".xls")


End Sub

以下是实际刷新数据的子项:

Sub Refresh()

Application.Calculation = xlCalculationManual'确保仅在告知您时才拉数据

Dim wkbook As Workbook
Dim OpenedBook As String
OpenedBook = "G:\Folder Name\Sub Folder\File Opened in Folder.xlsx" 'FULL PATH OF WORKBOOK TO BE OPENED
NewBook = "G:\Folder Name\Sub Folder\File Saved in Folder\" 'BASE NAME OF THE SAVED WORKBOOK

'OPEN THE DESIRED WORKBOOK
Set wkbook = Workbooks.Open(OpenedBook)
wkbook.Activate

'REFRESH ALL BBG FORMULAE
Application.Run "RefreshAllWorkbooks"
Application.Run "RefreshAllStaticData"
Application.Wait (Now + TimeValue("00:00:10"))


End Sub

否则将刷新实际公式,并且是BBG BDH公式的直接说明。例如。 = BDP(B3&“ currency”,“ px_mid”)其中B3的货币对类似于“ EURUSD”。关于为什么即使在Wait和DoEvents“修复”之后,为什么公式仍未提取的任何想法?我感到很困惑,我对BBG / VBA的工作原理有一些根本性的误解,所以请帮助我理解为什么这种情况首先存在。预先感谢!

0 个答案:

没有答案