如何在VBA内加入定时器

如何在VBA内加入定时器,第1张

VBA程序运行中,你可能需要自动执行某些代码或者定时执行某些计划任务,如自动保存,这就要使用定时器来完成。这里水文工具集给出VBA中使用计时器的两种方法,其一是使用Application对象的OnTime方法来运行任务,其二是通过Windows API函数来完成,新手用第一种方式比较容易,具体实例如下:

一、采用Application.OnTime实现计时器的方式

view sourceprint?

01.'================================

02.' VBA采用Application.OnTime实现计时器

03.'

04.' http://www.cnhup.com

05.'================================

06.Public RunWhen As Double

07.Public Const cRunIntervalSeconds = 120 ' two minutes

08.Public Const cRunWhat = "TheSub" ' the name of the procedure to run

09.Sub StartTimer()

10.RunWhen = Now + TimeSerial(0,0,cRunIntervalSeconds)

11.Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _

12.Schedule:=True

13.End Sub

14.Sub TheSub()

15.StartTimer ' Reschedule the procedure

16.End Sub

17.Sub StopTimer()

18.On Error Resume Next

19.Application.OnTime EarliestTime:=RunWhen,Procedure:=cRunWhat, _

20.Schedule:=False

21.End Sub

只要你是写在EXCEL里面的程序,不打开EXCEL是不可能执行的,你需要另外采取措施定时打开这个EXCEL文件。安排定时任务可以在控制面板的计划任务里面,注意把VBA的函数改名为auto_open,这样打开EXCEL的就执行你的VBA了。

有两个难点

1) 如果用VBA的话,没有Timer控件,如何激活?

如果用循环延时,占用过多CPU资源

2) 如果Excel关闭了自办,所以不能用VBA编

计划任务+VBS可以做到:

1) 编写VBS,用以下代码

dim WS,Fso

WScript.Sleep 300

set fso=createobject("Scripting.FileSystemObject")

fso.filecopy "C:\aa.xls","C:\" &format(date,"yyyyMMddhhmmss" &".xls"

set fso=nothing

此文件以 Copyxls.vbs 命名

2) 设定计划任务 每隔24小时执行此文件一次

(打开控制面板 -->计划任务 -->添加计划任务

之后按提示 *** 作就行)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11892617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存