0

汤森路透 Eikon 使用:

我需要从路透社获得有关外汇现货价格的数据。使用路透社的公式很容易做到这一点。但是,我需要在 VBA 脚本中使用这些数据。VBA 脚本的一部分插入公式,然后路透社检索数据,但这可能需要一段时间(10-20 秒)。

如何让 VBA 脚本暂停,直到路透社检索到数据?(在前 10 秒内,路透社数据的单元格显示:“正在检索......”

Range("B2").value = Application.Evaluate("RtGet(" & IDN & "," & RWAL & "," & MIDPRICE & "," & TYPENUM & ")")

此代码现在用于插入公式,其中 RWAL 是汇率标识符(例如 EUR=)

4

1 回答 1

1

我们需要使用 application.run 在代码中使用 RtGet 函数,因为它实际上是一个工作表函数。因为它是一个工作表函数,所以在代码运行时不会检索数据。

为了解决这个问题,我们使用 Application.RTD.RefreshData 从 RTD 服务器中提取数据

Function getField(ric As String, field As String) As String
    Data = Application.Run("RtGet", "IDN", ric, field)
    Do While VBA.Left(CStr(Data), 3) = "Ret" 'ie loop while it is retrieving data
        Application.RTD.RefreshData
        DoEvents
        Data = Application.Run("RtGet", "IDN", ric, field)
        Debug.Print Data
    Loop
    getField = Data
End Function

Public Sub testGetField()
    Dim test
    test = getField("EUR=", "BID")
End Sub
于 2014-05-14T10:04:10.473 回答