標題:
[發問]
如何將EXCEL的即時資料定時複製到下方 (DDE)
[打印本頁]
作者:
pipe
時間:
2012-5-30 14:16
標題:
如何將EXCEL的即時資料定時複製到下方 (DDE)
本帖最後由 pipe 於 2012-5-31 16:06 編輯
小弟完全不懂VBA,想請教各位前輩一個問題:
使用券商DDE連結EXCEL,檔案中會有即時資料,但只有即時
我想要將目前的及時資料每五分鐘複製數值貼在下方
如下
[attach]11196[/attach]
即時資料會一直變動,我想要每五分鐘將即時欄位複製值貼在下方欄位
從08:30 一直到13:45, 請問EXCEL要怎麼做呢??
請各位高手幫忙,謝謝.
作者:
c_c_lai
時間:
2012-5-30 14:24
回復
1#
pipe
請參考:
關於盤中DDE紀錄
作者:
pipe
時間:
2012-5-30 15:53
本帖最後由 pipe 於 2012-5-30 16:01 編輯
回復
2#
c_c_lai
CC大抱歉,我努力爬文也看完您的範例檔案,但真的無法對應修改成我自己的需求, 一竅不通阿
請您幫忙修改一下我的附件excel好嗎? 謝謝!!
資料從08:29:50開始,每五分鐘往下存一筆當時的及時資料"值"(不是公式,之後內容值不會再變動),直到收盤 13:45:10
作者:
c_c_lai
時間:
2012-5-30 21:33
本帖最後由 c_c_lai 於 2012-5-31 20:33 編輯
回復 c_c_lai
CC大抱歉,我努力爬文也看完您的範例檔案,但真的無法對應修改成我自己的需求, 一竅不通阿 ...
pipe 發表於 2012-5-30 15:53
實在是真服了你,想想還是幫你寫好了。
Option Explicit
Dim timerEnabled As Boolean
Dim Pos As Integer ' 將每隔 "多少時間" 處理時段,移到此處來處理。
Private Sub Workbook_Open()
Pos = Sheets("sheet1").Range("C" & Rows.Count).End(xlUp).Row
timerEnabled = False
Call timerStart ' 程式一啟始,便去自動執行 timerStart
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.Timer", , False
Me.Save
End Sub
Public Sub Timer()
On Error Resume Next
If (TimeValue(Now) > Sheets("sheet1").Range("AV2").Value) Then Exit Sub
If (TimeValue(Now) >= Sheets("sheet1").Range("AV1").Value) Then ' 開盤、收盤時段設定
' 盤中處理,將資料匯入寫入工作表單內儲存。
With Sheets("sheet1")
Pos = Pos + 1 ' 將變動行號加一行
.Cells(Pos, 1).Value = Date ' 日期
.Cells(Pos, 2).Value = Time ' 時間
.Cells(Pos, 3).Resize(1, 12) = .Range("C8:N8").Value ' 大均、大差、期均、期差、台指、高點、低點、中關、價差、振福、摩台、加權
.Cells(2, 49).Value = Pos ' AW2
End With
End If
Call timerStart
End Sub
Sub timerStart()
If timerEnabled Then
Application.OnTime (Now + Sheets("sheet1").Range("AW1").Value), "ThisWorkbook.Timer"
Else
timerEnabled = True
' 系統剛連上 DDE 至資料匯入Excel工作表單,須有一個緩衝時段,
' 這時如果馬上去抓取DDE資料,會有型態不符的錯誤訊息產生,並中斷執行序的作業。
Application.OnTime (Now + TimeValue("00:00:05")), "ThisWorkbook.Timer"
End If
End Sub
複製代碼
剪下後直接貼入到 ThisWorkbook 程式區就 OK 了。
作者:
pipe
時間:
2012-5-30 23:28
回復
4#
c_c_lai
CC 大真英雄也!
信手拈來輕鬆寫出一段程式,對小弟幫助太大了,明天開盤時來測試一下
感謝CC大的幫忙!!
不嫌棄的話,小弟願意分享應用在台指期的高勝率戰法(如果CC大有在玩期貨的話)
小弟目前無法下載附件,也無法寄出站內短訊息,歡迎用站內信件聯繫告知聯絡方式!!謝謝CC大!!
作者:
pipe
時間:
2012-5-30 23:48
回復
4#
c_c_lai
CC大,雖然程式可以說看不懂,但是我在程式碼中沒有看到 08:30 或是 13:45 這樣的時間設定
請問這個程式是設定一開啟就自己執行,每五分鐘記錄一次(不管開盤收盤)嗎?
作者:
c_c_lai
時間:
2012-5-31 07:27
回復
6#
pipe
你的 "AV1"、以及 "AV2" 欄位不就已經載明了嗎?
本段程式它是可以由外部來控制的 (方便測試用),假設測試時間是在晚上八點到九點之間,是以每隔 20 秒寫入一筆資料,你便可以
這麼做, 將以下欄位內容異動成 (千萬不要加上 "" 符號,即直接打入 20:00:00、21:00:00、以及 00:00:20 等時間數據, 以此類堆):
AV1 = "20:00:00",AV2 = "21:00:00", AW1 = "00:00:20", 然後去再行測試答案即出!
寫程式要切記一點,千萬不要寫死程式,否則會成為一個掰腳仙!
My E-Mail:
[email protected]
你可以記檔案到此,謝謝!
作者:
pipe
時間:
2012-5-31 11:23
回復
7#
c_c_lai
小弟眼拙,CC大提醒後就了解怎麼做了,目前盤中測試一切OK
感謝CC大的幫忙!!
等到收盤後較有空的時間,再跟CC大聊一下期貨
作者:
c_c_lai
時間:
2016-10-24 20:17
回復
8#
pipe
盤中測試
[attach]25624[/attach]
作者:
c_c_lai
時間:
2016-10-25 10:36
回復
8#
pipe
[attach]25633[/attach]
Option Explicit
Dim timerEnabled As Boolean
Private Sub Workbook_Open()
timerEnabled = False
Call timerStart ' 程式一啟始,便去自動執行 timerStart
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime (Now + TimeValue("00:00:01")), "ThisWorkbook.Timer", , False
Me.Save
End Sub
Public Sub Timer()
Dim ws As Worksheet
Dim Pos As Integer ' 將每隔 "多少時間" 處理時段,移到此處來處理。
timerEnabled = True
On Error Resume Next
Set ws = Sheets("工作表1")
If (TimeValue(Now) > ws.Range("I2").Value) Then Exit Sub
If (TimeValue(Now) >= ws.Range("I1").Value) Then ' 開盤、收盤時段設定
' 盤中處理,將資料匯入寫入工作表單內儲存。
With Sheets("工作表2")
Pos = .Range("A" & Rows.Count).End(xlUp).Row + 1 ' 將變動行號加一行
.Cells(Pos, 1).Value = Date ' 日期
.Cells(Pos, 2).Value = ws.[B3] ' 時間 (=DDEEXCEL|FUTURE!TXF16.時間)
.Cells(Pos, 3).Resize(1, 8) = ws.Range("B4:B11").Value ' 市價 漲跌 漲跌幅 開盤價 最高價 最低價 累計交易量 乖離率
End With
End If
Call timerStart
End Sub
Sub timerStart()
If timerEnabled = False Then
Application.OnTime (Now + Sheets("工作表1").Range("I1").Value), "ThisWorkbook.Timer"
Else
' 系統剛連上 DDE 至資料匯入Excel工作表單,須有一個緩衝時段,
' 這時如果馬上去抓取DDE資料,會有型態不符的錯誤訊息產生,並中斷執行序的作業。
Application.OnTime (Now + TimeValue("00:00:05")), "ThisWorkbook.Timer"
End If
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)