如何通过VBA仅在Excel文件首次创建时添加文件创建日期
实现Excel文件首次打开时仅写入一次创建日期的VBA方案
要实现仅在文件首次创建(复制粘贴或另存为后)写入一次创建日期,核心思路是先检查目标单元格是否已有内容,仅为空时才执行写入操作,同时把逻辑绑定到工作簿的打开事件中,具体实现步骤如下:
操作步骤
- 按
Alt+F11打开VBA编辑器,找到当前工作簿的ThisWorkbook对象并双击打开代码窗口。 - 替换或写入以下代码:
Private Sub Workbook_Open() Dim hiddenSheet As Worksheet Dim targetCell As Range Dim creationDate As Date Dim oFS As Object ' 替换为你的隐藏工作表名称和指定单元格 Set hiddenSheet = ThisWorkbook.Worksheets("隐藏数据") Set targetCell = hiddenSheet.Range("A1") ' 仅当目标单元格为空时执行写入 If IsEmpty(targetCell.Value) Then Set oFS = CreateObject("Scripting.FileSystemObject") creationDate = oFS.GetFile(ThisWorkbook.FullName).DateCreated Set oFS = Nothing ' 写入日期,可根据需求调整格式 targetCell.Value = creationDate ' 可选:设置单元格格式 ' targetCell.NumberFormat = "yyyy-mm-dd" End If End Sub
代码说明
- 判断逻辑:通过
IsEmpty(targetCell.Value)检查指定单元格是否为空,避免每次打开文件重复写入。 - 获取创建日期:复用你原有的文件系统对象逻辑,准确获取文件的创建时间。
- 目标定位:请将
"隐藏数据"和"A1"替换为你实际的隐藏工作表名称和目标单元格地址。
注意事项
- 保存文件时需选择启用宏的格式(如
.xlsm或.xlsb),否则宏会失效。 - 若隐藏工作表受保护,需先解除保护再写入,写入后可重新保护(可在代码中添加保护/解除保护逻辑)。
内容的提问来源于stack exchange,提问作者user1706426
相关产品推荐
相关产品推荐

