Excel中定時執(zhí)行任務(wù)或代碼的幾種方法
- 2017-08-09 13:54:00
- zstmtony 翻譯
- 31836
一、使用Excel自帶的OnTime函數(shù)
1)打開Excel 進(jìn)入vbe編輯器 (可使用Alt+F11組合快捷鍵),插入一個新的模塊(Module),并在模塊中輸入以下代碼:
Public Sub TestSub() MsgBox ("Office交流網(wǎng)定時執(zhí)行任務(wù)") '顯示一個提示對話框 End Sub
2)然后給它配上一個計時器,就能讓它在指定的時間自動運(yùn)行。
Application.OnTime Now + TimeValue("00:00:10"), "TestSub"
這句代碼可以放在Wordbook的 打開Open事件中來觸發(fā)
ontime是一個excel函數(shù),所以必須指定application這個對象。now函數(shù)是指定當(dāng)前時間,配合上+號這是運(yùn)算符,與后面timevalue的值相加。逗號后是調(diào)用過程的名稱,使用雙引號引用起來。
運(yùn)行效果:
二、用API函數(shù)來實現(xiàn)(可實現(xiàn)毫秒級的計時器)
要借用兩個Windows 的API函數(shù):SetTimer和KillTimer
前者用于設(shè)置定時器,后者用于刪除定時器
Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, _ ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
聲明lTimerID用于存放定時器的ID
Public lngTimerID As Long
啟動定時器,IDuration是定時器觸發(fā)的時間,單位為毫秒
Sub StartTimer(lDuration As Long) ' 如果定時器不存在,則設(shè)置定時器,定時器觸發(fā)的時間為IDuration,定時器觸發(fā)后執(zhí)行OnTime If lngTimerID = 0 Then lngTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime) ' 否則停止定時器,并設(shè)置一個新的定時器 Else Call StopTimer lngTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime) End If End Sub
停止定時器的函數(shù)
Sub StopTimer() KillTimer 0&, lngTimerID End Sub
OnTime函數(shù)
Sub OnTime()
' 計時器觸發(fā)后運(yùn)行的代碼放在這
Debug.Print "計時器定時執(zhí)行了!"
End Sub
三、相關(guān)知識:
Application的OnTime函數(shù)
安排一個過程在將來的特定時間運(yùn)行(既可以是具體指定的某個時間,也可以是指定的一段時間之后)。
表達(dá)式.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
表達(dá)式 一個代表 Application 對象的變量。
參數(shù)
名稱 |
必需/可選 |
數(shù)據(jù)類型 |
說明 |
---|---|---|---|
EarliestTime |
必需 |
Variant |
希望此過程運(yùn)行的時間。 |
Procedure |
必需 |
String |
要運(yùn)行的過程名。 |
LatestTime |
可選 |
Variant |
過程開始運(yùn)行的最晚時間。例如,如果 LatestTime 參數(shù)設(shè)置為 EarliestTime + 30,且當(dāng)?shù)竭_(dá)EarliestTime 時間時,由于其他過程處于運(yùn)行狀態(tài)而導(dǎo)致 Microsoft Excel 不能處于“就緒”、“復(fù)制”、“剪切”或“查找”模式,則 Microsoft Excel 將等待 30 秒讓第一個過程先完成。如果 Microsoft Excel 不能在 30 秒內(nèi)回到“就緒”模式,則不運(yùn)行此過程。如果省略該參數(shù),Microsoft Excel 將一直等待到可以運(yùn)行該過程為止。 |
Schedule |
可選 |
Variant |
如果為 True,則預(yù)定一個新的 OnTime 過程。如果為 False,則清除先前設(shè)置的過程。默認(rèn)值為True。 |
本示例設(shè)置從現(xiàn)在開始 15 秒后運(yùn)行 my_Procedure。
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
本示例設(shè)置 my_Procedure 在下午 5 點開始運(yùn)行。
Application.OnTime TimeValue("17:00:00"), "my_Procedure"
本示例撤消前一個示例對 OnTime 的設(shè)置。
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _ Procedure:="my_Procedure", Schedule:=False
相關(guān)文章:
Access計時器Timer與VB計時器Timer的區(qū)別
- office課程播放地址及課程明細(xì)
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平臺
- 將( .accdb) 文件格式數(shù)據(jù)庫轉(zhuǎn)換為早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫文件格式(.mdb)轉(zhuǎn)換為 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫引擎和訪問連接引擎以阻止對遠(yuǎn)程數(shù)據(jù)庫的訪問(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運(yùn)行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常注冊的解決辦法(regsvr32注冊時卡?。?/a>
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下出現(xiàn)橫向滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節(jié)點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列表等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)并解析返回的XML
- 早期PB程序連接Sqlserver出現(xiàn)錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一個MMC控制臺,或者用后來的MMC版
- sql server連接不了的解決辦法
- localhost與127.0.0.1區(qū)別
- Roych的淺談數(shù)據(jù)庫開發(fā)系列(Sql Server)
- sqlserver 自動備份對備份目錄沒有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
聯(lián)系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |