首页 > 解决方案 > Excel BBG 公式不刷新

问题描述

我正在尝试编写一个基本脚本来打开另一个文件,刷新该文件中的数据,将该更新的文件另存为值(不是公式),然后关闭最初打开的包含公式的文件而不保存。我的问题是,在宏完成并且“更新”文件将自己保存起来之前,该文件实际上并没有提取请求的公式。换句话说,公式开始刷新,显然永远不会完成刷新,然后使用“#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&" curncy", "px_mid") 其中 B3 有一个像 "EURUSD" 这样的货币对。即使在 Wait 和 DoEvents '修复'之后,关于为什么公式没有拉动的任何想法?我有一种感觉,我误解了一些关于 BBG/VBA 工作原理的基本知识,所以请帮助我理解为什么这种情况首先存在。提前致谢!

标签: excelvbarefreshbloomberg

解决方案


推荐阅读