- 帖子
- 5
- 主題
- 0
- 精華
- 0
- 積分
- 6
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office2007
- 閱讀權限
- 10
- 註冊時間
- 2014-7-5
- 最後登錄
- 2016-12-7
|
10#
發表於 2014-7-5 14:21
| 只看該作者
大家好,我有跟barrykuo大大有相同的問題,就是想擷取DDE的"整時"資料( ex :00:01:00、00:02:00....)
,因為我對VBA沒有基礎,只是爬文抓適用程式來修改。但在整時資料擷取上仍無法獲得解決。
目前我把
Application.OnTime Now + TimeValue("00:00:0" & 59 - Second(Time) Mod 1), "自動記錄" '每1分鐘遞迴一次
修改成這樣,但在記錄資料時,無法得到"準時"記錄,還出現1分內記錄2次、或者隔了幾分都沒動靜....。
因為我的權限不能下載barrykuo大大程式來比較,所以咧出我的程式,請教各位前輩如何解決。
Public uMode&, StartTime, EndTime
Sub 共用參照()
StartTime = "08:29:30" '開盤時間(提早十秒開始,才可記錄開盤量價)
EndTime = "23:59:59" '測試時間使用
End Sub
Sub 自動記錄()
Dim MyBook As Workbook, MySht As Worksheet, xEnd As Range
'--------------------------------------------------------------------------
If uMode = 0 Then Exit Sub
If Time > TimeValue(EndTime) Then Exit Sub '收盤時間以後不執行
Set MyBook = ThisWorkbook
Set MySht = MyBook.Sheets("DDE")
'讓程式只在本檔案的〔指定工作表〕中執行,否則會將資料寫到其它工作表
MySht.Range("AA6") = Time '當前時間(時間碼表)
'----------------------------------------------------------
If Val(MySht.Range("AA11").Value) > 0 Then
Set xEnd = MySht.Range("A65536").End(xlUp)(2)
If xEnd.Row < 12 Then Set xEnd = MySht.Range("A12")
MySht.Range("A11:Z11").Value = MySht.Range("A6:Z6").Value
xEnd.Resize(1, 26).Value = MySht.Range("A2:Z2").Value
xEnd(1, 27).Value = Time
'------------------------------------------------
If ActiveSheet.Name = MySht.Name And xEnd.Row > 20 Then
ActiveWindow.ScrollRow = xEnd.Row - 8 '讓最新資料保持在可見視窗中
End If
ThisWorkbook.Save '存檔
End If
'----------------------------------------------------------
'每一分遞迴一次
Application.OnTime Now + TimeValue("00:00:0" & 59 - Second(Time) Mod 1), "自動記錄"
End Sub
Sub 開始執行()
Call 共用參照
uMode = 1
Call 自動記錄
End Sub
Sub 停止執行()
uMode = 0
End Sub |
|