【发布时间】:2015-04-21 09:52:44
【问题描述】:
我正在尝试从指定目录中获取所有 [非空] 文件属性。如何遍历目录并将文件设置为不隐藏[“For Each ...”省略它们]?
Sub SomeProc()
Dim sFile As Variant
Dim oShell: Set oShell = CreateObject("Shell.Application")
Dim oDir: Set oDir = oShell.Namespace("c:\SomePath")
SetAttr "c:\SomePath\SomeFile.accdb", vbNormal
For Each sFile In oDir.Items
For i = 0 To 288
If oDir.GetDetailsOf(sFile, i) <> "" Then
Debug.Print i & ": " & oDir.GetDetailsOf(oDir.Items, i) & ": " & oDir.GetDetailsOf(sFile, i)
End If
Next i
Next
SetAttr "c:\SomePath\SomeFile.accdb", vbHidden
End Sub
编辑:
感谢 Alex K. 的提示 [他的代码没有显示属性的值] 我设法做到了:它有效,但我想存在性能问题 [而且它没有考虑子文件夹 -没问题]
Sub SomeProc()
Const PATH As String = "c:\SomePath\"
Dim sFile As Variant
Dim sFileName As String
Dim oShell As Object
Dim oDir As Object
Dim i, k As Long
Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.Namespace(PATH)
sFileName = Dir$(PATH & "*.*", vbHidden)
k = 0
Do Until Len(sFileName) = 0
k = k + 1
Set sFile = oDir.parsename(sFileName)
For i = 0 To 288
If oDir.GetDetailsOf(sFile, i) <> "" Then
Sheets(1).Cells(i + 1, k).Value = i & ": " & oDir.GetDetailsOf(oDir.Items, i) & ": " & oDir.GetDetailsOf(sFile, i)
End If
Next i
sFileName = Dir$()
Loop
End Sub
我也发现了不同的方法:http://www.techbookreport.com/tutorials/vb_fileattributes.html
【问题讨论】:
标签: vba attributes hidden