如何通过Excel VBA获取Excel文件的最后编辑用户名称?
能否通过Excel VBA获取文件最后编辑者姓名
完全可以实现,针对部门全员共享访问的业务模型场景,有两种常用实现方案,可根据对准确性的要求选择:
方案1:读取内置文档属性(无需额外配置,快速实现)
Excel文件本身会在元数据中存储最后保存者信息,直接通过VBA读取内置属性即可拿到对应值,适合对准确性要求不高的场景。
对应代码如下:
Sub 读取最后编辑者() Dim lastEditorName As String ' 读取内置元数据中的最后作者字段 lastEditorName = ThisWorkbook.BuiltinDocumentProperties("Last Author") ' 将结果写入当前工作表A1单元格,可自行调整展示位置 Range("A1").Value = "最后编辑人:" & lastEditorName End Sub
注意:该方法读取的是文件元数据值,如果文件经过传输拷贝、用户手动修改过Office用户名、或被非Office工具编辑过,返回结果可能和实际编辑人存在偏差。
方案2:保存事件自动记录(适合共享场景,准确性高)
如果需要精准记录实际编辑人,推荐用工作簿保存事件触发记录:每次用户保存文件时,自动读取当前打开文件的Office用户名写入指定位置,不会受元数据异常影响。
操作时需要将以下代码写入VBA编辑器的ThisWorkbook模块中:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' 示例将最后编辑人写入「参数配置」工作表的B2单元格,可自行修改工作表和单元格位置 Sheets("参数配置").Range("B2").Value = Application.UserName ' 如果需要同步记录最后编辑时间,放开下行注释即可 ' Sheets("参数配置").Range("B3").Value = Now() End Sub
注意事项:
- 使用该方案需要将文件保存为启用宏的格式,比如
.xlsm、.xlsb格式- 需要告知部门成员打开文件时启用宏,否则记录逻辑不会生效;如果需要避免用户漏启用宏,可以搭配宏检测逻辑,打开文件时先判断宏是否启用,未启用则直接跳转提示页
内容的提问来源于stack exchange,提问作者James Yang
相关产品推荐
相关产品推荐

