- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
2#
發表於 2012-3-29 16:12
| 只看該作者
我差點忘了與我擁有小學生等級的同學們是無法下載附件的,
所以我又將它直接貼了出來,方便大家閱覽。- ' 盤中 DDE 存檔的實際應用範例
- Option Explicit
- Dim actEnabled As Boolean
- Dim index As Single
- Private Sub Workbook_Open()
- If (Sheets("工作表1").Range("AA1").Value = "") Then Sheets("工作表1").Range("AA1").Value = "08:45:00" ' 假設AA1欄位為空白,則寫入開盤起始時間
- If (Sheets("工作表1").Range("AA2").Value = "") Then Sheets("工作表1").Range("AA2").Value = "13:45:59" ' AA2欄位亦同。(此兩欄紀錄起始終止時間)
- If (Sheets("工作表1").Range("AA3").Value = "") Then Sheets("工作表1").Range("AA3").Value = 0 ' 紀錄最後資料匯入之列號 (Rows)。
- If (Sheets("工作表1").Range("AA4").Value = "") Then Sheets("工作表1").Range("AA4").Value = "00:00:10" ' 紀錄資料匯入相隔時間,如每隔十秒寫入一次。
- If (TimeValue(Now) > Sheets("工作表1").Range("AA2").Value) Then ' 如果目前時間業已超過AA2的時段,則呼叫.......
- Call stopProcedure
- Else ' 反之,則呼叫.......
- Call startProcedure
- End If
- End Sub
- Private Sub Workbook_BeforeClose(Cancel As Boolean)
- On Error Resume Next
- Call actStop
- End Sub
- Private Sub startProcedure() ' 保留作為控制項之應用程序,如按鈕之巨集應用等。
- Call actStart
- End Sub
- Private Sub stopProcedure() ' 保留作為控制項之應用程序,如按鈕之巨集應用等。
- Call actStop
- End Sub
- Sub Starter()
- If (actEnabled = True And TimeValue(Now) >= Sheets("工作表1").Range("AA1").Value And TimeValue(Now) <= Sheets("工作表1").Range("AA2").Value) Then
- index = Sheets("工作表1").Range("AA3").Value
- If (Index = 0) Then Call newTitle '假設newTitle程序(由使用者自行定義)是將第一列的資料抬頭名稱寫入到工作表2。 如:日期、時間、R1C5的對應欄位資料等。
- Sheets("工作表1").Range("AA3").Value = index + 1 ' 紀錄列號加一。
- Sheets("工作表2").Cells(index + 2, 1).Value = Date
- Sheets("工作表2").Cells(index + 2, 2).Value = TimeValue(Now)
- ' Sheets("工作表2").Cells(index + 2, 3).Value = Sheets("工作表1").Cells(1, 5).Value
- '
- ' 複製從券商DDE匯入之相對應位置資料,如 R1C5 對應的可能是收盤價等等。
- '
- End If
- End Sub
- Sub onStarter()
- Call Starter
- If actEnabled Then Call actStart
- End Sub
- Sub actStart()
- actEnabled = True
- Application.OnTime (Now + Sheets("工作表1").Range("AA4").Value), "ThisWorkBook.onStarter" ' 寫入資料的排程 (目前是每隔十秒寫入一次)
- End Sub
- Sub actStop()
- actEnabled = False
- On Error Resume Next
- Application.OnTime Now, "ThisWorkBook.onStarter", , False
- End Sub
複製代碼 |
|