通过 VBA 代码,到期后打开文件时自动删除文件本体,需注意备份,仅适合特殊场景。
按Alt+F11打开 VBA 编辑器,双击左侧ThisWorkbook,粘贴以下代码:
Private Sub Workbook_Open()
Dim ExpireDate As Date
ExpireDate = CDate("2025/12/23") ' 直接用CDate转换日期,避免格式问题
If Now() > ExpireDate Then
MsgBox "文件已到期,将自动删除!"
ThisWorkbook.Close SaveChanges:=False
' 替换Kill为Shell命令(兼容性更好)
Shell "cmd /c ping 127.0.0.1 -n 2 >nul & del """ & ThisWorkbook.FullName & """", vbHide
Else
' 用简单计算替代DateDiff
Dim DaysLeft As Long
DaysLeft = ExpireDate - Now()
MsgBox "文件剩余有效期:" & DaysLeft & "天"
End If
End Sub确保文件格式正确:
将文件另存为XLSM 格式(启用宏的工作簿);
关闭 WPS 后重新打开文件,测试代码是否正常运行。
注意事项:
WPS 对 VBA 的支持不如 Office 完整,若仍报错,建议在 Microsoft Excel 中编写代码;
kill或del命令可能被杀毒软件拦截,需临时允许程序的文件操作权限;
此代码会永久删除文件,测试前务必备份原文件。
以上代码会在每次打开文件时弹窗提醒文件剩余到期时间,以下代码不会弹出提醒文件剩余的有效期:
Private Sub Workbook_Open()
Dim ExpireDate As Date
ExpireDate = CDate("2025/12/23") ' 可修改为你的目标到期日期
If Now() > ExpireDate Then
MsgBox "文件已到期,将自动删除!"
ThisWorkbook.Close SaveChanges:=False
' 替换Kill为Shell命令(兼容性更好,避免被拦截)
Shell "cmd /c ping 127.0.0.1 -n 2 >nul & del """ & ThisWorkbook.FullName & """", vbHide
End If
' 移除了原有的“剩余有效期”提示相关代码,未到期时无任何弹窗提示
End Sub代码修改说明:
完全删除了原代码中关于 “文件剩余有效期” 的所有逻辑(包括DaysLeft变量定义、日期差计算、对应的MsgBox提示);
保留了到期后的提示与自动删除功能,未到期时程序静默运行,不会弹出任何窗口干扰使用;
仍保留了日期格式兼容处理和更稳定的Shell删除命令,确保在 WPS/Excel 中都能较好兼容;
可直接修改ExpireDate = CDate("2025/12/23")中的日期为你需要的到期时间(格式保持 “年 / 月 / 日” 即可)。
使用注意事项:
文件需保存为XLSM 格式(启用宏的工作簿),否则代码无法生效;
测试前务必备份文件,此代码删除文件不可逆;
部分杀毒软件可能拦截del命令,需临时允许文件操作权限。





还没有评论,来说两句吧...