一、采用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小时执行此文件一次
(打开控制面板 -->计划任务 -->添加计划任务
之后按提示 *** 作就行)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)