返回列表 上一主題 發帖

程式碼如何寫以紀錄EXCEL的DDE數據每秒鐘紀錄)(已解決)

程式碼如何寫以紀錄EXCEL的DDE數據每秒鐘紀錄)(已解決)

本帖最後由 jiuhtsair 於 2011-8-23 17:55 編輯

各位大大好:
      對於VBA我是新手
      在網路上看到許多高手寫出有關DDE紀錄的問題,但大多是紀錄一分鐘或是一分鐘以上的時間。曾嘗試將其更改成每秒紀錄一次,卻總是不得其門而入...
      我想要把DDE傳給EXCEL的資料(時間、開盤價、最高價、最低價、收盤價、單量、成交量),依照時間每一秒紀錄一次(放在另一個工作表中),不知道能否請大大們協助?謝謝!

      另外,能否介紹幾本VBA入門書,在坊間有許多書,但看的眼花撩亂,也懇請大大們已過來人經驗介紹幾本好書...謝謝!
50 字節以內
不支持自定義 Discuz! 代碼

回復 1# jiuhtsair
  1. Sub Ex()
  2.         Dim A As Date
  3.         A = Time
  4.         Do
  5.           DoEvents
  6.           If Time > A Then
  7.             A = Time
  8.             Sheet2.Range("A" & Rows.Count).End(xlUp).Offset(1) = Time & Sheet1.[A1]
  9.             '請自行修改->EXCEL的資料(時間、開盤價、最高價、最低價、收盤價、單量、成交量)
  10.           End If
  11.         Loop
  12. End Sub
複製代碼

TOP

感謝大大開示。曾研究了大大回答EXCEL的DDE數據每分鐘紀錄的文,可惜沒完全弄懂...這程式已經煩惱一星期了,感謝大大解除困惑。謝謝!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

我也還是新手,雖然程式的部分還沒辦法給予幫助,不過書籍的話可以推薦給你
Excel VBA 2007 程式設計全圖解 電腦人文化 出版
作者:七條達弘 渡邊健 ...等人注
這本說的還蠻詳細的,我目前自學三週,雖然沒辦法像版主他們程式打得很精簡,
要什麼有什麼,但是已經可以自己做出一些基本功能,
上一步、下一步、在介面中輸入資料並送回..等功能
且書中的範例可以下載
網址:http://www.pcuser.com.tw/download/2AC710/samples.zip
推薦給你~~

TOP

謝謝分享!我也找到個不錯的教學網站
http://210.240.125.13/phcno1/index.htm 請參考!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

我將程式碼貼上後,它告訴我"執行階段錯誤424,此處需要物件"
但沒有看到他所指的錯誤區域在哪裡,請問這要如何改呢?
另外,DDE傳回的時間是值=(X小時*3600+Y分鐘*60)/86400,不知道這樣把設A=Time會不會有問題,我是否要先將(X小時*3600+Y分鐘*60)/86400轉化成 "X小時:Y分鐘:Z秒鐘"的型態呢?
謝謝!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

抱歉!怕陳述的不清楚,我把我的DDE檔案也傳上來。懇請網上大大解惑!謝謝!
想要做的功能就是把sheet1的內容每秒鐘(a2儲存格內容變化時動作)存入Sheet2中!希望能夠紀錄一整天以便分析參考。謝謝!
TFXexcel_DDE.zip (7.89 KB)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 7# jiuhtsair


試試看
  1. Sub Ex()
  2.         Dim A As Single
  3.         A = 0.361111   '時間 上午 08:40:00
  4.         j = 2
  5.         Do
  6.           DoEvents
  7.           'If Sheets(2).Cells(j, 2) > A Then
  8.           '  A = Sheets(2).Cells(j, 2)
  9.           If Sheets(1).Cells(2, 1) > A Then   'SHEETS(1)的A2大於 時間
  10.             A = Sheets(1).Cells(2, 1)         '更改時間為SHEETS(1)的A2
  11.         '  -- 附檔 Sheets(1).Cells(3, 5)......   為空白  --
  12.         'Sheets(2).Cells(j, 2) = Sheets(1).Cells(3, 5)
  13.         'Sheets(2).Cells(j, 3) = Sheets(1).Cells(3, 6)
  14.         'Sheets(2).Cells(j, 4) = Sheets(1).Cells(3, 7)
  15.         'Sheets(2).Cells(j, 5) = Sheets(1).Cells(3, 8)
  16.         'Sheets(2).Cells(j, 6) = Sheets(1).Cells(3, 9)
  17.         'Sheets(2).Cells(j, 7) = Sheets(1).Cells(3, 10)
  18.         Sheets(2).Cells(j, 2).Resize(1, 6) = Sheets(1).Cells(2, 5).Resize(1, 6).Value
  19.         O = 0
  20.         H = -99999
  21.         l = 99999
  22.         cumVol = V
  23.         j = j + 1
  24.           End If
  25.         Loop
  26. End Sub
複製代碼

TOP

感謝大大解惑!
程式碼19行到22行,當初是看其他程式仿造的,如果我沒有用到它的運算式(他原先是利用第一個價錢為開盤價O,第二個價錢如果高於第一個,那最高價就是第二個,如果第二個價錢低於第一個,那最低價就是第二個...)我是否可以把它去除?
明天開盤後試試!感謝!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

ㄏㄏ..感謝!OK了!
我用手動方式改變時間...執行程式後一如所願!
謝謝大大解惑。感謝!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題