Gre*_*ern 6 excel winapi vba file excel-vba
在Windows资源管理器中,如果我右键单击某个文件并选择"属性"以获取文件的"属性"窗口,然后选择"详细信息"选项卡,则会在其中列出一个名为"上次保存者"的属性.它似乎是上次修改文件时登录的Windows帐户名.
我查看了FileSystemObject但是我没有看到File对象有这样的属性.
我如何在VBA中获得该属性?它有Windows API吗?
更新:
在这个线程中有3次尝试使用Shell的GetDetailsOf.我很欣赏这些努力,但是在尝试了所有这些(特别是OssieMac的代码示例)之后我似乎很清楚,在GetDetailsOf中找不到存储在文件系统的"Last Saved By"字段中的文本.
抓我的头.Windows资源管理器如何做到这一点?
试试这个 - 代码使用BuiltinDocumentProperties类:
Option Explicit
Sub Test()
MsgBox LastAuthor
End Sub
Function LastAuthor() As String
LastAuthor = ThisWorkbook.BuiltinDocumentProperties("Last Author")
End Function
Run Code Online (Sandbox Code Playgroud)
使用扩展文件属性 - Microsoft报告的幻数Author
是9
.但是,随着Windows版本的发布,这个数字随着时间而变化,因为Vista已经发布20
- 请看这个链接.进一步测试,您也可以尝试10
使用Windows 10.
Option Explicit
Sub Test()
Dim varPath As Variant
Dim varFileName As Variant
varPath = "C:\Users\foo\bar\" '<~~ ensure final \
varFileName = "lol.xlsx"
'depending on OS version, try 9, 10 and 20
Debug.Print GetAuthorFromShell(varPath, varFileName, 9)
Debug.Print GetAuthorFromShell(varPath, varFileName, 10)
Debug.Print GetAuthorFromShell(varPath, varFileName, 20)
End Sub
Function GetAuthorFromShell(varPath As Variant, varFileName As Variant, intProperty As Integer) As String
Dim objShell As Object
Dim objFolder As Object
Dim strAuthor As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(varPath)
With objFolder
strAuthor = .getdetailsof(.Items.Item(varFileName), intProperty)
End With
GetAuthorFromShell = strAuthor
End Function
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4902 次 |
最近记录: |