尝试使用Excel VBA捕获磁盘上文件的所有文件属性,包括扩展属性.能够让它循环遍历文件并捕获基本属性(来自文件系统):
还想捕获来自文件本身的扩展属性:
以及右键单击文件时可见的其他属性.
目标是创建文件服务器上所有文件的详细列表.
背景
最近,我回答了一个问题,其中涉及在寻找一个文件的属性。最终,我提出的代码运行良好,但是有一点让我感到困惑。
问题
我想在两行中用一个变量替换一个字符串(在我看来是这样),更具体地说,请尝试以下操作:
Sub TestForSO()
Dim oDir As Object: Set oDir = CreateObject("Shell.Application").Namespace("C:\Users\...\")
Debug.Print oDir.GetDetailsOf(oDir.Items, 1)
End Sub
Run Code Online (Sandbox Code Playgroud)
将路径名替换为包含excel文件的目录,它应该可以正确返回属性值。
现在,当我尝试用变量替换完整路径时,以下内容会在debug.print行上引发“运行时错误91:对象变量或未设置块变量”:
Sub TestForSO()
Dim MainPath As String: MainPath = "C:\Users\...\"
Dim oDir As Object: Set oDir = CreateObject("Shell.Application").Namespace(MainPath)
Debug.Print oDir.GetDetailsOf(oDir.Items, 1)
End Sub
Run Code Online (Sandbox Code Playgroud)
解
对我而言,以下功能确实有用:
Sub TestForSO()
Dim MainPath As String: MainPath = "C:\Users\...\"
Dim oDir As Object: Set oDir = CreateObject("Shell.Application").Namespace(CStr(MainPath))
Debug.Print oDir.GetDetailsOf(oDir.Items, 1)
End Sub
Run Code Online (Sandbox Code Playgroud)
我不了解其本质上的区别,因为下面的代码将通过“ Watches”给出相同的结果:
Sub test()
Dim check1 As String, check2 As String …
Run Code Online (Sandbox Code Playgroud)