返回列表 上一主題 發帖

[發問] 請教使用yeswin RTD, 巨集開啟後資料就無法更新

呼呼!! 謝謝CC大 可以動了
另外有個小問題請教一下
我在run 巨集的時候 嘗試去開另外一個excel 就會出錯 "執行階段錯誤 9"
這個是不是EXCEL的限制呢?

TOP

回復 3# randychou
#2 樓程式碼只是單純讓你測試是否有資料錄實際寫入而已,
如果你要實際做盤中測試,則須加入開市、關市資訊,
則請改成如下:
  1. Public turnKey As Integer

  2. Sub Auto_Open()
  3.     If (TimeValue(Now) >= TimeValue("13:45:00")) Then      '  設定每日關市時間
  4.         Exit Sub
  5.     ElseIf (TimeValue(Now) <= TimeValue("08:45:00")) Then   '  設定每日開市時間
  6.         Application.OnTime (TimeValue("08:45:00")), "Module11.Macro_TX_DDE_COPY"
  7.     Else
  8.         '  系統剛連上 Yeswin報價元件(RTD) COM 機制,須有一個緩衝時段,這時如果馬上
  9.         '  去抓取資料,會有型態不符的錯誤訊息 (?無資料) 產生,並中斷執行序的作業。
  10.         Application.OnTime (Now + TimeValue("00:00:05")), "Module11.Macro_TX_DDE_COPY"
  11.     End If
  12. End Sub

  13. Sub Macro_TX_DDE_COPY()
  14.     Dim nums As Integer
  15.    
  16.     nums = 20      '  20 秒 (預設值)
  17.    
  18.     turnKey = turnKey + 1
  19.     Sheets("DDE_DATA").[A5] = "( " & turnKey & " 秒 )"
  20.    
  21.     If (Second(Time) Mod nums) = 0 Then    '  間隔 nums 秒,儲存一筆資料列
  22.        With Sheets("RECORD_TX")
  23.             If Not IsError(Sheets("DDE_DATA").[D2]) Then          '  避開型態不符的錯誤訊息
  24.                 pos = .Range("A" & Rows.Count).End(xlUp).Row + 1  '  往下加一筆資料列
  25.                 .Cells(pos, 1).Resize(1, 9) = Sheets("DDE_DATA").Cells(2, 1).Resize(1, 9).Value
  26.                 turnKey = 0  '  turnKey 值歸零
  27.             End If
  28.         End With
  29.     End If
  30.    
  31.     If (TimeValue(Now) <= TimeValue("13:45:00")) Then _
  32.         Application.OnTime (Now + TimeValue("00:00:01")), "Module11.Macro_TX_DDE_COPY"
  33. End Sub
複製代碼

TOP

謝謝 c_c_lai 大 的解答. 週一再來試試看
很感謝

TOP

請教各位前輩
小弟原先都是使用easywin 的DDE 資料 但非常的吃資源
最近發現元大的另一個軟體 Yeswin 有提 ...
randychou 發表於 2013-1-4 11:46

Yeswin 報價元件(RTD) 是正常的,  =RTD("money.excel",,,$A$7,"Price")
你可以直接寫成  =RTD("money.excel",,"TXF1","Price")
試試看!
  1. Public turnKey As Integer

  2. Sub Macro_TX_DDE_COPY()
  3.     Dim nums As Integer
  4.    
  5.     nums = 20      '  20 秒 (預設值)
  6.    
  7.     turnKey = turnKey + 1
  8.     Sheets("DDE_DATA").[A5] = "( " & turnKey & " 秒 )"
  9.    
  10.     If (Second(Time) Mod nums) = 0 Then    ' 間隔 nums 秒
  11.        With Sheets("RECORD_TX")
  12.             If Not IsError(Sheets("DDE_DATA").[D2]) Then
  13.                 pos = .Range("A" & Rows.Count).End(xlUp).Row + 1
  14.                 .Cells(pos, 1).Resize(1, 9) = Sheets("DDE_DATA").Cells(2, 1).Resize(1, 9).Value
  15.                 turnKey = 0
  16.             End If
  17.         End With
  18.     End If
  19.    
  20.     Application.OnTime (Now + TimeValue("00:00:01")), "Module11.Macro_TX_DDE_COPY"
  21. End Sub
複製代碼

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題