VBA/Excel/Access/Word/Application/Application OnTime
Содержание
- 1 If you want to keep refreshing the data on a regular basis, you can make the macro run itself
- 2 Run on time
- 3 Scheduling a Macro to Run Every Two Minutes
- 4 Set Refresh Data Timer
- 5 The OnTime event
- 6 Use OnTime to trigger the refresh data
- 7 Using Application.OnTime to Periodically Analyze Data
- 8 writes the time to cell A1 and also programs another event five seconds later.
If you want to keep refreshing the data on a regular basis, you can make the macro run itself
Dim mdteScheduledTime As Date
Sub RefreshData()
ThisWorkbook.UpdateLink Name:="C:\YourExcel2007File.xlsx", Type:= xlExcelLinks
mdteScheduledTime = Now + TimeSerial(0, 1, 0)
Application.OnTime mdteScheduledTime, "RefreshData"
End Sub
Sub StopRefresh()
Application.OnTime mdteScheduledTime, "RefreshData",, False
End Sub
Run on time
Sub RunOnTime()
Application.OnTime Date + TimeSerial(15, 0, 0), "RefreshData"
End Sub
Scheduling a Macro to Run Every Two Minutes
Sub ScheduleAnything()
WaitHours = 0
WaitMin = 2
WaitSec = 0
NameOfThisProcedure = "ScheduleAnything"
NameOfScheduledProc = "RemindMe"
NextTime = Time + TimeSerial(WaitHours, WaitMin, WaitSec)
Application.OnTime EarliestTime:=NextTime, Procedure:=NameOfThisProcedure
Application.Run NameOfScheduledProc
End Sub
Sub RemindMe()
Application.Speech.Speak Text:="meeting."
End Sub
Set Refresh Data Timer
Sub RunOnTime()
Application.OnTime (Date + TimeSerial(10, 47, 0)), "RefreshData1"
End Sub
The OnTime event
Sub SetAlarm()
Application.OnTime 0.625, "DisplayAlarm"
End Sub
Sub DisplayAlarm()
Beep
MsgBox "Wake up. It"s time for your afternoon break!"
End Sub
Use OnTime to trigger the refresh data
Sub RunOnTime()
Application.OnTime Date + TimeSerial(15, 0, 0), "RefreshData"
End Sub
Sub RefreshData()
ThisWorkbook.UpdateLink Name:="C:\YourExcel2007File.xlsx", Type:=xlExcelLinks
End Sub
Using Application.OnTime to Periodically Analyze Data
Sub ScheduleTheDay()
Application.OnTime EarliestTime:=TimeValue("8:00 AM"), Procedure:=CaptureData
Application.OnTime EarliestTime:=TimeValue("9:00 AM"), Procedure:=CaptureData
End Sub
Sub CaptureData()
Dim myWorksheet As Worksheet
Dim NextRow As Long
Set myWorksheet = Worksheets("Sheet1")
myWorksheet.range("A2").QueryTable.Refresh BackgroundQuery:=False
Application.Wait (Now + timeValue("0:00:10"))
NextRow = myWorksheet.cells(65536, 1).End(xlUp).row + 1
myWorksheet.range("A2:B2").copy myWorksheet.cells(NextRow, 1)
End Sub
writes the time to cell A1 and also programs another event five seconds later.
Dim NextTick As Date
Sub UpdateClock()
ThisWorkbook.Sheets(1).Range("A1") = Time
NextTick = Now + TimeValue("00:00:05")
Application.OnTime NextTick, "UpdateClock"
End Sub
Sub StopClock()
On Error Resume Next
Application.OnTime NextTick, "UpdateClock", , False
End Sub