Dim NextBackupTime As Date ' 声明全局变量,用于存储下次备份时间Sub 自动备份()On Error GoTo ErrorHandlerDim backupPath As StringDim safeName As String' 处理文件名非法字符safeName = Replace(Replace(ThisWorkbook.Name, ":", "_"), "/", "_")' 检查并创建备份目录(兼容路径格式)If Dir("C:\Backup", vbDirectory) = "" Then MkDir "C:\Backup"' 生成带时间戳的备份路径(精确到秒)backupPath = "C:\Backup\" & safeName & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".xlsx"' 执行备份ThisWorkbook.SaveCopyAs backupPathMsgBox "已备份到:" & backupPath, vbInformation, "备份成功"' 设置下一次备份时间(30秒后)NextBackupTime = Now() + TimeValue("00:00:30")Application.OnTime NextBackupTime, "自动备份"Exit SubErrorHandler:MsgBox "备份失败:" & Err.Description, vbCritical, "错误"End Sub' 启动自动备份(可绑定到按钮或工作簿打开事件)Sub 开始自动备份()Call 自动备份End Sub' 停止自动备份(需手动调用)Sub 停止自动备份()On Error Resume NextApplication.OnTime NextBackupTime, "自动备份", , FalseMsgBox "已停止自动备份", vbInformationEnd Sub
开始自动备份:Private Sub Workbook_Open()Call 开始自动备份End Sub
停止自动备份:文件备份至C盘Backup目录下。 Private Sub Workbook_BeforeClose(Cancel As Boolean)Call 停止自动备份End Sub
下面这个小程序,是我老哥开的,主要经营食材的,有需要的可以看一下,无需要的跳过。

