Excel中定時執行任務或代碼的幾種方法
- 2017-08-09 13:54:00
- zstmtony 翻譯
- 31029
一、使用Excel自帶的OnTime函數
1)打開Excel 進入vbe編輯器 (可使用Alt+F11組閤快捷鍵),插入一箇新的模塊(Module),併在模塊中輸入以下代碼:
Public Sub TestSub() MsgBox ("Office交流網定時執行任務") '顯示一箇提示對話框 End Sub
2)然後給牠配上一箇計時器,就能讓牠在指定的時間自動運行。
Application.OnTime Now + TimeValue("00:00:10"), "TestSub"
這句代碼可以放在Wordbook的 打開Open事件中來觸髮
ontime是一箇excel函數,所以必鬚指定application這箇對象。now函數是指定當前時間,配閤上+號這是運祘符,與後麵timevalue的值相加。逗號後是調用過程的名稱,使用雙引號引用起來。
運行效果:
二、用API函數來實現(可實現毫秒級的計時器)
要借用兩箇Windows 的API函數:SetTimer和KillTimer
前者用於設置定時器,後者用於刪除定時器
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是定時器觸髮的時間,單位爲毫秒
Sub StartTimer(lDuration As Long) ' 如果定時器不存在,則設置定時器,定時器觸髮的時間爲IDuration,定時器觸髮後執行OnTime If lngTimerID = 0 Then lngTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime) ' 否則停止定時器,併設置一箇新的定時器 Else Call StopTimer lngTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime) End If End Sub
停止定時器的函數
Sub StopTimer() KillTimer 0&, lngTimerID End Sub
OnTime函數
Sub OnTime()
' 計時器觸髮後運行的代碼放在這
Debug.Print "計時器定時執行瞭!"
End Sub
三、相關知識:
Application的OnTime函數
安排一箇過程在將來的特定時間運行(旣可以是具體指定的某箇時間,也可以是指定的一段時間之後)。
錶達式.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
錶達式 一箇代錶 Application 對象的變量。
蔘數
名稱 |
必需/可選 |
數據類型 |
説明 |
---|---|---|---|
EarliestTime |
必需 |
Variant |
希望此過程運行的時間。 |
Procedure |
必需 |
String |
要運行的過程名。 |
LatestTime |
可選 |
Variant |
過程開始運行的最晚時間。例如,如果 LatestTime 蔘數設置爲 EarliestTime + 30,且當到達EarliestTime 時間時,由於其他過程處於運行狀態而導緻 Microsoft Excel 不能處於“就緒”、“複製”、“剪切”或“查找”模式,則 Microsoft Excel 將等待 30 秒讓第一箇過程先完成。如果 Microsoft Excel 不能在 30 秒內迴到“就緒”模式,則不運行此過程。如果省略該蔘數,Microsoft Excel 將一直等待到可以運行該過程爲止。 |
Schedule |
可選 |
Variant |
如果爲 True,則預定一箇新的 OnTime 過程。如果爲 False,則清除先前設置的過程。默認值爲True。 |
本示例設置從現在開始 15 秒後運行 my_Procedure。
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
本示例設置 my_Procedure 在下午 5 點開始運行。
Application.OnTime TimeValue("17:00:00"), "my_Procedure"
本示例撤消前一箇示例對 OnTime 的設置。
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _ Procedure:="my_Procedure", Schedule:=False
相關文章:
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學習平颱
- 將( .accdb) 文件格式數據庫轉換爲早期版本(.mdb)的文件格式
- 將早期的數據庫文件格式(.mdb)轉換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數據庫引擎和訪問連接引擎以阻止對遠程數據庫的訪問(remote table)
- Access 365 /Access 2019 數據庫中哪些函數功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調用WebService(直接Post方式)併解析返迴的XML
- 早期PB程序連接Sqlserver齣現錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區彆
- Roych的淺談數據庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業管理器 SQLServer2005_SSMSEE
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |