- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
4#
發表於 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 了。 |
-
-
a.rar
(74 Bytes)
|