- 帖子
- 533
- 主題
- 58
- 精華
- 0
- 積分
- 613
- 點名
- 247
- 作業系統
- win 10
- 軟體版本
- []
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2013-3-19
- 最後登錄
- 2026-10-11
             
|
VBA的 DDE 函數 抓取
本帖最後由 Scott090 於 2017-9-22 14:26 編輯
懇請協助如何正確取得資料
看盤軟體打開,儲存格放入 DDE公式是可以取得資料的。
希望用DDE函數來做這一件事,但沒能如願,
如下的程式:
1. Application.DDEInitiate("EWinner", "RQ") 可以打開DDE通道
2. returnList = Application.DDERequest(ChannelNum, "'100000.Open'") 透過通道送出 item '100000.Open'
就無法取得資料; returnList 內是字串 "錯誤 2023"- ''DDE格式:ServerName|Topic!Item
- ''儲存格內公式
- ''開盤價:=EWinner|RQ!'100000.open'
- ''最高價:=EWinner|RQ!'100000.high'
- ''最低價:=EWinner|RQ!'100000.low'
- ''成交價:=EWinner|RQ!'100000.price'
- ''
- Sub DDELinkTest()
-
- Dim ChannelNum As Long
- Dim i%, j%
- Dim returnList
-
- '建立DDE連結通道
- 'DDEInitiate(AppName, Topic)
- Do
- ChannelNum = Application.DDEInitiate("EWinner", "RQ") '點金靈的AppName:EWinner、Topic:RQ
- i = i + 1
- Loop While i < 50 And ChannelNum = 0 '確認已建立通道
-
- If ChannelNum <> 0 Then
- 'DDERequest(channel, item), item = stockNumber 100000.Open 測試大盤 100000 開盤價
- ' 儲存格內公式 "=EWinner|RQ!'100000.open'"
- returnList = Application.DDERequest(ChannelNum, "'100000.Open'")
- ''
- On Error GoTo ErrorHand
- '取得該項目的資料內容
- For j = LBound(returnList) To UBound(returnList)
- ActiveSheet.Cells(75, i + 1).Formula = returnList(j)
- Next
-
- End If
-
- ErrorHand:
- On Error GoTo 0
- '關閉DDE連結通道
- Application.DDETerminate ChannelNum
- End Sub
複製代碼 |
|