Vba 在路透社检索到数据后继续
汤森路透Eikon使用: 我需要从路透社获得有关外汇现货价格的数据。用路透社公式很容易做到这一点。但是,我需要在VBA脚本中使用此数据。VBA脚本的一部分插入了公式,然后路透社检索数据,但这可能需要一段时间(10-20秒) 如何使VBA脚本暂停,直到reuters检索到数据?(路透社数据的单元格在前10秒内显示:“检索…”Vba 在路透社检索到数据后继续,vba,excel,reuters,Vba,Excel,Reuters,汤森路透Eikon使用: 我需要从路透社获得有关外汇现货价格的数据。用路透社公式很容易做到这一点。但是,我需要在VBA脚本中使用此数据。VBA脚本的一部分插入了公式,然后路透社检索数据,但这可能需要一段时间(10-20秒) 如何使VBA脚本暂停,直到reuters检索到数据?(路透社数据的单元格在前10秒内显示:“检索…” Range("B2").value = Application.Evaluate("RtGet(" & IDN & "," & RWAL &
Range("B2").value = Application.Evaluate("RtGet(" & IDN & "," & RWAL & "," & MIDPRICE & "," & TYPENUM & ")")
此代码现在用于插入公式,其中RWAL是汇率标识符(例如EUR=)我们需要使用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
您可以进行
Do-While
循环,该循环将重复类似于Sleep 1000
的操作,直到单元格值发生变化(与存储在变量中的先前值相比)。Sleep(和wait)举起整个excel,对吗?这意味着公式也不再试图检索路透社的数据。你只需要一次价格快照,还是需要价格不断地流到excel工作表中?。函数RtGet()
适用于后一种情况。另外,请使用您正在使用的桌面软件更新您的问题(例如,Reuters 3000 Xtra或Thomson Reuters Eikon)。我当前需要一个一次性快照(他们现在获取快照的方式是通过流式传输,然后复制粘贴值).我使用汤森路透Eikon如果您进行编码,您最好使用专有的汤森路透数据访问接口,如用于实时数据的AdxRtList。