在Excel中如何用vba实现:每隔一段时间自动将工作簿保存到以当时时间为文件名的文件中
2个回答
展开全部
以下代码运行后,会在当前目录下创建一个 Backup 的文件夹,然后每五分钟以当前日期时间为文件名备份工作簿到这个目录中,运行下面的 Timerstop 可停止定时。
Dim Flag As Boolean
Sub Backup()
Dim Path As String, OldPath As String
On Error Resume Next
If Flag Then Flag = False: Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Dir(ThisWorkbook.Path & "\Backup\", vbDirectory) = "" Then MkDir ThisWorkbook.Path & "\Backup\"
Path = ThisWorkbook.Path & "\Backup\"
ThisWorkbook.SaveCopyAs Path & Replace(Now, ":", ":") & ".xls"
Application.OnTime Now() + TimeValue("00:05:00"), "Backup" '五分钟运行一次Backup函数
VBA.DoEvents
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub Timerstop()
Flag = True
End Sub
Dim Flag As Boolean
Sub Backup()
Dim Path As String, OldPath As String
On Error Resume Next
If Flag Then Flag = False: Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Dir(ThisWorkbook.Path & "\Backup\", vbDirectory) = "" Then MkDir ThisWorkbook.Path & "\Backup\"
Path = ThisWorkbook.Path & "\Backup\"
ThisWorkbook.SaveCopyAs Path & Replace(Now, ":", ":") & ".xls"
Application.OnTime Now() + TimeValue("00:05:00"), "Backup" '五分钟运行一次Backup函数
VBA.DoEvents
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub Timerstop()
Flag = True
End Sub
更多追问追答
追问
水平实在是高啊!!!能否再辛苦一下从第5行开始帮忙增加注释
追答
If Dir(ThisWorkbook.Path & "\Backup\", vbDirectory) = "" Then MkDir ThisWorkbook.Path & "\Backup\" '如果找不到当前工作簿目录下的Backup 文件夹,则在当前工作簿目录创建一个
Path = ThisWorkbook.Path & "\Backup\" 这个不解释。其实你直接在下面写上也可以了,不一定要经过这个Path变量赋值
ThisWorkbook.SaveCopyAs Path & Replace(Now, ":", ":") & ".xls" 本工作簿另存为(这里的另存为只是在后面的目录下复制一个,并不会改变本工作簿) 后面是路径+文件名+后缀。因为电脑不能以英文冒号作为文件名,所以我把英文冒号替换为中文冒号,当然文件名你可以自己定义,路径也可以自己改。
Application.OnTime Now() + TimeValue("00:05:00"), "Backup" 从现在开始,五分钟后,运行一个名为 Backup的过程,也就是本过程,所以下次运行本过程后又重新计算五分钟,就实现了定时。 当然时间和过程你们可以自己改。
下面的那个过程是停止计时的,运行那个过程后设置Flag标记为True (注意定义Flag为公有变量,否则不能两个过程共用)。因为上面的Backup过程有这句话If Flag Then Flag = False: Exit Sub 如果Flag为True 则设置Flag会False 然后直接退出,所以不会再运行下面这句
Application.OnTime Now() + TimeValue("00:05:00"), "Backup" 定时的代码了,所以就可以停止了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |