Sub ts()
Dim oDLG
Dim pth As String
Dim Flname As String
Dim shl As Shell32.Shell
Dim shfd As Shell32.Folder
Dim s As String
Dim i As Integer
Set oDLG = CreateObject("MSComDlg.CommonDialog")
With oDLG
.DialogTitle = "打开文件"
.Filter = "所有文件|*.*"
.MaxFileSize = 255
.ShowOpen
If .Filename <> "" Then
i = InStrRev(.Filename, "\")
If i = 0 Then Exit Sub
Flname = Mid(.Filename, i + 1)
Set shl = New Shell
Set shfd = shl.Namespace(Left(.Filename, i - 1))
For i = 0 To 39
If shfd.GetDetailsOf(0, i) <> "" And shfd.GetDetailsOf(shfd.Items.Item(Flname), i) <> "" Then
s = s & i & ":" & shfd.GetDetailsOf(0, i) & ": " & shfd.GetDetailsOf(shfd.Items.Item(Flname), i) & Chr(10)
Debug.Print s
End If
Next i
MsgBox s, vbInformation, "文件属性"
End If
End With
Set oDLG = Nothing
End Sub先引用Microsoft Shell Controls and Automation
VBA实例
Sub ts()
Dim pth As String
Dim Flname As String
Dim sPath As String
Dim sOwner As String
Dim shl As Shell32.Shell
Dim shfd As Shell32.Folder
Dim s As String
Dim i As Integer
sPath = "\\10.116.0.26\smc82files\06、公用文件\"
Flname = Dir(sPath)
i = 2
Do While Flname <> ""
If Flname <> "." And Flname <> ".." Then
If GetAttr(sPath & Flname) = vbDirectory Then
Flname = Dir()
Else
Set shl = New Shell
Set shfd = shl.Namespace(sPath)
ActiveSheet.Cells(i, 1).Value = Flname
ActiveSheet.Cells(i, 2).Value = shfd.GetDetailsOf(shfd.Items.Item(Flname), 10)
ActiveSheet.Cells(i, 3).Value = shfd.GetDetailsOf(shfd.Items.Item(Flname), 20)
i = i + 1
Flname = Dir()
End If
Else
Flname = Dir()
End If
Loop
MsgBox "ok"
End Sub
本博客介绍了一个使用VBA实现的自动化脚本,用于打开指定路径下的所有文件,提取并打印文件属性,包括文件大小和创建者信息。
367

被折叠的 条评论
为什么被折叠?



