gpt4 book ai didi

excel - 更新表后刷新 BDH。布隆伯格。伏巴

转载 作者:行者123 更新时间:2023-12-03 01:57:49 27 4
gpt4 key购买 nike

我看到有一些关于此的旧内容,但我希望有人找到了新的解决方案。

在我的例程中,我更新了 3 个工作簿中的日期,以便 BDH 命令获得最新价格,然后我将这 3 个工作簿中的结果复制到一个单独的摘要工作簿中。然而,显然,正如常见的那样,BDH 函数不会刷新/更新,即使在其中暂停一段时间后也是如此。

在将 BDH 命令复制粘贴到结果表之前,刷新或重新请求 BDH 命令的最新发现是什么?

==========

Twenty.Worksheets("Portfolio_2016").Activate
[K3].Value = TradeDay
[L3].Value = PrevTradeDay

'Japan.Worksheets("Portfolio_2016").Activate
'[K3].Value = TradeDay
'[L3].Value = PrevTradeDay

'AAR.Worksheets("Portfolio_2016").Activate
'[K3].Value = TradeDay
'[L3].Value = PrevTradeDay

Call RefreshStaticLinks

End Sub

Public Sub RefreshStaticLinks()

Call Twenty.Worksheets("Portfolio_2016").Range("K7:Q26").Select
Call Application.Run("RefreshCurrentSelection")
Call Application.OnTime(Now + TimeValue("00:00:01"), "ProcessData")

End Sub

Private Sub ProcessData()

Dim c As Range

For Each c In Selection.Cells
If c.Value = "#N/A Requesting Data..." Then
Call Application.OnTime(Now + TimeValue("00:00:01"), "ProcessData")
Exit Sub
End If
Next c

Call CopyPaste

End Sub

最佳答案

您需要使用 Application.OnTime 来实现此目的。宏暂停时,彭博公式不会更新。 Bloomberg 上 WAPI 的常见问题解答部分提供了示例。以下内容摘自此处,您还可以在其中找到示例电子表格。

<小时/>

[下载示例!在此处下载有效的 Excel VBA 示例]我们的 BDx() 系列函数返回的数据都是异步方式的。因此,如果您的 Excel VBA 应用程序[宏]依赖于返回的 Bloomberg 数据,我们建议您将以下逻辑合并到您的 VBA 代码中,这将在数据填充到 Excel 单元格中时暂停您的应用程序:

Option Explicit
Private Const MAXROWS = 25

Sub fillFormula()

Range("B2:B" & MAXROWS).Clear
Range("B2").Formula = "=BDP($A2,B$1)"
Range("B2").AutoFill Range("B2:B" & MAXROWS), xlFillDefault
checkStatus

End Sub

Sub checkStatus()

Dim i

For i = 2 To MAXROWS

' Check to make sure that the cells are NOT requesting data
If "#N/A Requesting Data..." = Cells(i, 2) Then

Application.OnTime (Now + TimeValue("00:00:02")), "checkStatus"
Exit Sub

End If

Next i

MsgBox "We just finished getting the values"
' Add code here that would process the data now that it's updated

End Sub

上面的代码可以添加到空白模块中,以下代码将添加到单击事件处理程序中,例如工作表上按钮的单击事件处理程序:填写公式

关于excel - 更新表后刷新 BDH。布隆伯格。伏巴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com