你是否遇到过这样的情况:
- 不确定 Excel 文件是否被同事修改过?
- 想自动记录工作簿的最后保存时间,方便版本管理?
- 需要检查文件是否最新,避免使用过期数据?
今天,我们就用 Excel VBA 的 `
workbook.BuiltinDocumentProperties("Last Save Time")` 来解决这个问题!
什么是 "Last Save Time"?
Excel 文件自带 内置文档属性(Built-in Document Properties),其中包括:
- 标题(Title)
- 作者(Author)
- 创建日期(Creation Date)
- 最后保存时间(Last Save Time)
`Last Save Time` 就是 Excel 文件最后一次被保存的时间戳,我们可以用 VBA 轻松获取它!
如何用 VBA 获取最后保存时间?
基础代码(直接获取)//直接获取最后保存时间
Sub GetLastSaveTime()
Dim wb As Workbook
Dim lastSaveTime As Variant
Set wb = ActiveWorkbook ' 当前活动工作簿
On Error Resume Next ' 防止报错
lastSaveTime = wb.BuiltinDocumentProperties("Last Save Time")
On Error GoTo 0 ' 恢复错误处理
If IsEmpty(lastSaveTime) Then
MsgBox "无法获取最后保存时间!", vbExclamation
Else
MsgBox "最后保存时间: " & lastSaveTime, vbInformation
End If
End Sub
进阶应用(自动记录到单元格)
如果你想在 Excel 里自动记录最后修改时间,可以这样写:
Sub RecordLastSaveTime()
Dim wb As Workbook
Dim lastSaveTime As Variant
Set wb = ThisWorkbook ' 当前代码所在的工作簿
On Error Resume Next
lastSaveTime = wb.BuiltinDocumentProperties("Last Save Time")
On Error GoTo 0
If Not IsEmpty(lastSaveTime) Then
' 在 A1 单元格记录最后保存时间
wb.Sheets("Sheet1").Range("A1").Value = "最后修改时间: " & lastSaveTime
End If
End Sub
适用场景:
- 自动生成文件版本日志
- 检查文件是否最新版本
扩展应用:自动备份提醒
如果文件超过 7 天未保存,就弹出提醒:
Sub CheckIfFileIsOld()
Dim wb As Workbook
Dim lastSaveTime As Date
Dim daysSinceLastSave As Long
Set wb = ActiveWorkbook
On Error Resume Next
lastSaveTime = wb.BuiltinDocumentProperties("Last Save Time")
On Error GoTo 0
If IsEmpty(lastSaveTime) Then Exit Sub
daysSinceLastSave = DateDiff("d", lastSaveTime, Now)
If daysSinceLastSave > 7 Then
MsgBox "警告:该文件已超过 7 天未保存!建议备份!", vbExclamation
End If
End Sub
适用场景:
- 长期未更新的数据文件提醒
- 重要文档自动备份检查
注意事项
1. 文件未保存时可能返回空值(新文件第一次保存前无法获取)。
2. 不同 Excel 版本支持情况可能不同(`.xls` 和 `.xlsx` 可能有差异)。
3. 只读文件可能无法获取最新时间(建议检查文件是否被锁定)。
`wb.BuiltinDocumentProperties("Last Save Time")` | 获取最后保存时间 |
`DateDiff("d", lastSaveTime, Now)` | 计算多久未修改 |
`Sheets("Log").Range("A1").Value = lastSaveTime` | 自动记录修改时间 |
如果觉得有用,别忘了 点赞 + 收藏,关注我,获取更多Excel VBA高效编程技巧!