问题
I was looking for the same answer where I need to call data from a RTD server
Sub Test()
Range("d1") = RTD("tickerplantrtdserver", , 4#2#1#6768#FUTSTK#N1#0#XX#Bid)
End Sub
When I extract data from Excel
RTD("tickerplantrtdserver", , 4#2#1#6768#FUTSTK#N1#0#XX#Bid)
it works fine and gives a number.
回答1:
Try this:
Range("d1") = [RTD("tickerplantrtdserver", , 4#2#1#6768#FUTSTK#N1#0#XX#Bid)]
[]
brackets are shortcut for Evaluate Function.
So it can be written like this as well:
Range("d1") = Evaluate("RTD(""tickerplantrtdserver"", , 4#2#1#6768#FUTSTK#N1#0#XX#Bid)")
Take note of the double quotes in the ""tickerplantrtdserver""
part.
I have not tried this yet and have no way of testing but Evaluate works on formulas, so I am just assuming it will work the same with RTD
.
回答2:
RTD is designed to return data continuously, but for the current value, try this:
Dim xlApp As New Excel.Application
Sub test()
Range("D1") = xlApp.WorksheetFunction.RTD("tickerplantrtdserver", Null, "4#2#1#6768#FUTSTK#N1#0#XX#Bid")
End Sub
xlApp is slow, so you want to initialize once only
If you get a bad value, the server may not have a value yet, so try again a few seconds later
NB: Windows Excel only (RTD not supported on MAC)
来源:https://stackoverflow.com/questions/29116721/rtd-in-excel-vba-need-to-call-data-from-rtd