大家好,我是你们的老朋友。今天要聊的这个Author对象,简直就是Excel中的“无名英雄”——它安静得让你几乎忘了它的存在,却在你需要时默默递上名片。
第一章:那个“谁动了我的表格”的侦探游戏
想象一下这个场景:周一早上,你打开团队共享的Excel文件,发现某个神秘人物修改了你的年度报表。你环顾四周,同事们都一脸无辜地喝着咖啡。
这时候,Author对象就像柯南一样登场了!
Sub 谁动了我的表格()
Dim myDoc As Workbook
Set myDoc = ThisWorkbook
MsgBox "最后修改这个文件的是:" & myDoc.BuiltinDocumentProperties("Last Author")
' 更直接的方式
MsgBox "这个文件的创建者是:" & myDoc.BuiltinDocumentProperties("Author")
End Sub
运行这段代码,答案揭晓——原来是隔壁部门的“表哥”张三!Author对象就这样轻松破案。
第二章:Author的“全家福”
Author对象可不是孤家寡人,它属于DocumentProperties大家族。这个家族有哪些成员呢?
Sub 查看所有文档属性()
Dim prop As DocumentProperty
Dim i As Integer
For Each prop In ThisWorkbook.BuiltinDocumentProperties
On Error Resume Next ' 有些属性可能无法读取
Debug.Print i & ": " & prop.Name & " = " & prop.Value
i = i + 1
Next prop
' 你会发现有趣的成员:
' Title - 标题
' Subject - 主题
' Author - 作者(默认是Excel安装时的用户名)
' Last Author - 最后保存者
' Creation Date - 创建日期
' 等等...
End Sub
第三章:给自己“贴个标签”的正确姿势
默认情况下,Author可能是你十年前安装Office时随手输入的“User123”。是时候给自己正名了!
Sub 给自己贴个高端标签()
With ThisWorkbook
.BuiltinDocumentProperties("Author") = "Excel魔法师·VBA大侠"
.BuiltinDocumentProperties("Title") = "2024年度神秘报表"
.BuiltinDocumentProperties("Subject") = "内含商业机密,阅后即焚"
.BuiltinDocumentProperties("Company") = "宇宙无敌数据部"
' 保存更改
.Save
End With
MsgBox "标签已更新!现在你是个有身份的表了!"
End Sub
第四章:实战场景——自动生成文件说明
作为公众号运营主管,我经常需要处理大量数据报表。这是我的私藏技巧:
Sub 自动生成文件说明()
Dim ws As Worksheet
Set ws = Worksheets.Add
ws.Name = "文件护照"
With ws
.Range("A1").Value = "【文件身份信息】"
.Range("A2").Value = "文件名称:"
.Range("B2").Value = ThisWorkbook.Name
.Range("A3").Value = "创始人:"
.Range("B3").Value = ThisWorkbook.BuiltinDocumentProperties("Author")
.Range("A4").Value = "最后操刀者:"
.Range("B4").Value = ThisWorkbook.BuiltinDocumentProperties("Last Author")
.Range("A5").Value = "出生日期:"
.Range("B5").Value = Format(ThisWorkbook.BuiltinDocumentProperties("Creation Date"), "yyyy年mm月dd日")
.Range("A6").Value = "最后美容时间:"
.Range("B6").Value = Format(ThisWorkbook.BuiltinDocumentProperties("Last Save Time"), "yyyy年mm月dd日 hh:mm")
' 加点格式让“护照”好看点
.Range("A1:B6").Columns.AutoFit
.Range("A1:B6").Borders.LineStyle = xlContinuous
End With
MsgBox "文件护照已生成!现在这个文件是有身份的体面文件了"
End Sub
第五章:那些年,我们踩过的坑
坑1:只读属性的“倔脾气”
' 错误示范 - 有些属性是只读的
ThisWorkbook.BuiltinDocumentProperties("Creation Date") = Date ' 报错!
' 正确做法 - 接受它的不可改变
Debug.Print "我出生于:" & ThisWorkbook.BuiltinDocumentProperties("Creation Date")
坑2:自定义属性的“小自由”
' 内置属性有限?自己造!
ThisWorkbook.CustomDocumentProperties.Add _
Name:="公众号文章链接", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:="https://mp.weixin.qq.com/..."
最后的小彩蛋:一键找出所有“无名氏”文件
Sub 寻找无名氏文件()
Dim wb As Workbook
Dim path As String
Dim file As String
path = "C:\你的文件夹路径\"
file = Dir(path & "*.xls*")
Do While file <> ""
Set wb = Workbooks.Open(path & file)
If wb.BuiltinDocumentProperties("Author") = "User" Or _
wb.BuiltinDocumentProperties("Author") = "" Then
Debug.Print "发现无名氏文件:" & file
' 可以在这里添加自动重命名逻辑
End If
wb.Close SaveChanges:=False
file = Dir
Loop
MsgBox "侦探工作完成!"
End Sub
结语
Author对象就像Excel世界里的“水印”——低调、有用,但常被忽视。它不会让你的表格计算更快,也不会让你的图表更美,但它能在关键时刻告诉你:“这个故事,是谁开始的,又是谁延续的。”
记住,一个好的Excel工作者,不仅要让表格“算得对”,还要让文件“有故事”。而Author,就是那个帮你记录故事的开篇人。
下次保存文件时,不妨想想:百年之后(或者下周一),当别人看到这个文件时,作者栏里会写着什么?是“User123”,还是“未来的Excel大师”?