在Windows资源管理器中,如果我右键单击某个文件并选择“属性”以获取文件的“属性”窗口,然后选择“详细信息”选项卡,则会在其中列出一个名为“#34;最后保存者”的属性&# 34 ;.它似乎是上次修改文件时登录的Windows帐户名。
我查看了FileSystemObject,但我没有看到File对象具有这样的属性。
如何在VBA中获得该属性?它有Windows API吗?
更新:
在这个帖子中有3次尝试使用Shell的GetDetailsOf。我很欣赏这些努力,但是在尝试了所有这些(特别是OssieMac的代码示例)之后,我似乎很清楚文本系统中存储的文本"最后保存的"在GetDetailsOf中找不到该字段。
抓我的头。 Windows资源管理器是如何做到的?
答案 0 :(得分:6)
试试这个 - 代码使用BuiltinDocumentProperties类:
Option Explicit
Sub Test()
MsgBox LastAuthor
End Sub
Function LastAuthor() As String
LastAuthor = ThisWorkbook.BuiltinDocumentProperties("Last Author")
End Function
使用扩展文件属性 - Microsoft报告Author
的幻数为9
。但是,随着Windows版本的发布,这个数字会随着时间而变化,因为Vista已经20
- 请参阅this link。对于某些测试,您还可以尝试{10}用于Windows 10。
10
答案 1 :(得分:3)
此数据称为Extended File Properties
,并存储在NTFS元数据中。您可以使用以下脚本阅读它们:
Dim arrHeaders(266)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Test.xtx")
For i = 0 to 265
arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)
Next
For Each strFileName in objFolder.Items
For i = 0 to 265
Wscript.Echo i & vbtab & arrHeaders(i) _
& ": " & objFolder.GetDetailsOf(strFileName, i)
Next
Next
请注意,不同的操作系统版本具有不同数量的扩展文件属性。 Windows 2000允许35,Windows Vista扩展属性计数为266。
<强>参考文献:强>
1)Borrowing from Windows Explorer in PowerShell part 2: extended properties