码迷,mamicode.com
首页 > 编程语言 > 详细

VBA定时执行某程序

时间:2019-01-05 14:15:12      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:自动保存   执行   open   需要   写法   work   注意   save   his   

在工作中我们经常需要定时执行某程序,或者有时需要每隔特定时间执行某个程序,例如我们需要每15分钟执行一次保存的动作,这个功能在VBA中是通过Application.OnTime函数来实现的。这个函数有两个参数,一个是执行程序的时间,另一个是要执行的程序名称。下面来看一代简单代码

Sub macro1()
Dim NewTime As Date
NewTime = Now + TimeValue("00:00:05")
Application.OnTime NewTime, "Macro2"
End Sub

Sub macro2()
MsgBox "你执行了程序Macro2"
End Sub

上面Macro1代码的意思是在5秒之后执行宏Macro2,在Macro1中我们定义了一个日期变量NewTime,其值是当前时间加上5秒,注意下这里时间的写法,"hh:mm:ss"时、分、秒。之后用到application.ontime函数,两个参数上面说过了,一个代表时间,一个代表要执行的程序。要想在5秒之后执行Macro2,你首先要手动运行Macro1,这样5秒之后才会运行Macro2,这点很重要,不要以为写出了这个代码其就可以自动运行了。

上面只是在特定时间执行某程序,那现在如果我们要循环执行某程序怎么办?比如我们每隔10秒钟就要执行一次自动保存的动作。这也好办,看下面的代码

Sub 自动保存()
Dim NewTime
NewTime = Now + TimeValue("00:00:05")
ThisWorkbook.Save
Application.OnTime NewTime, "自动保存"
End Sub

在这里我们没有用两个程序,而是将要执行的代码也嵌入到了Application.OnTime程序中,Application.OnTime NewTime, "自动保存",看到了吧,我们执行的是程序自身,每5秒调用一下本程序,运行的时候又设定了5秒之后执行本程序,形成了一个循环,这就达到了我们定时循环执行某动作的目的。

Sub hi()
   Debug.Print "hello"
End Sub

Sub AutoRun()
  hi
  Application.OnTime Now + TimeValue("00:00:05"), "AutoRun"
End Sub

  

上面说过要这些程序首先要手动运行一次,如果想要打开工作簿就自动执行,那在Open事件中调用一下就可以了

Private Sub Workbook_Open()
Call 自动保存
End Sub

VBA定时执行某程序

标签:自动保存   执行   open   需要   写法   work   注意   save   his   

原文地址:https://www.cnblogs.com/yuhuameng/p/10224249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!