可以遍历制定文件夹的所有文件,生成excel统计表,并添加超链接。VBA版本,直接在excel里面使用。171517bghzwxw6g3hh9yg1.png
VBA脚本
Public iFileSys As Object
Sub 遍历文件夹()
Cells.Delete '清除表格所有数据
Columns("B:B").NumberFormatLocal = "@"
Columns("F:G").NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show = -1 Then
iPath = .SelectedItems(1)
End If
End With
If iPath = "False" Or Len(iPath) = 0 Then Exit Sub '所选文件夹为空,结束脚本
ReDim arr(1 To 7, 1 To 1)
arr(1, 1) = "层级"
arr(2, 1) = "文件名"
arr(3, 1) = "完整路径(包含超链接)"
arr(4, 1) = "类型"
arr(5, 1) = "文件大小(KB)"
arr(6, 1) = "创建时间"
arr(7, 1) = "修改时间"
Set iFileSys = CreateObject("Scripting.FileSystemObject")
Call GetFolderFile(iPath, arr, 0)
arr = TransposeArray(arr)
ActiveSheet.Range("A1").Resize(UBound(arr), 7) = arr
For i = 2 To UBound(arr)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 3), Address:=Cells(i, 3)
Next
ActiveSheet.Rows.AutoFit
ActiveSheet.Columns.AutoFit
MsgBox "Done."
End Sub
Private Sub GetFolderFile(ByVal nPath As String, arr As Variant, TreeNum As Long)
On Error Resume Next
Set iFolder = iFileSys.GetFolder(nPath)
Set sFolder = iFolder.SubFolders
Set iFile = iFolder.Files
Call AddList(iFolder, arr, TreeNum)
For Each gFile In iFile
Call AddList(gFile, arr, TreeNum)
Next
'递归遍历所有子文件夹
For Each nFolder In sFolder
Call GetFolderFile(nFolder.Path, arr, TreeNum + 1)
Next
On Error GoTo 0
End Sub
Private Sub AddList(ByVal obj As Object, arr As Variant, TreeNum As Long)
On Error Resume Next
ub = UBound(arr, 2) + 1
ReDim Preserve arr(1 To 7, 1 To ub)
arr(1, ub) = TreeNum '层级
arr(2, ub) = CStr(IIf(Len(obj.Name) = 0, "\", obj.Name)) '文件名
arr(3, ub) = obj.Path '文件路径
arr(4, ub) = obj.Type '文件类型
arr(5, ub) = Format(obj.Size / 1024, "#,##0.00") '文件大小(KB)
arr(6, ub) = Format(obj.DateCreated, "yyyy-mm-dd hh:mm:ss") '创建时间
arr(7, ub) = Format(obj.DateLastModified, "yyyy-mm-dd hh:mm:ss") '修改时间
On Error GoTo 0
End Sub
Function TransposeArray(arrA) As Variant
Dim aRes()
If IsArray(arrA) Then
ReDim aRes(LBound(arrA, 2) To UBound(arrA, 2), LBound(arrA, 1) To UBound(arrA, 1))
For i = LBound(arrA, 1) To UBound(arrA, 1)
For j = LBound(arrA, 2) To UBound(arrA, 2)
aRes(j, i) = arrA(i, j)
Next
Next
TransposeArray = aRes
End If
End Function
不显示根目录文件夹
Private Sub GetFolderFile(ByVal nPath As String, arr As Variant, TreeNum As Long)
On Error Resume Next
Set iFolder = iFileSys.GetFolder(nPath)
Set sFolder = iFolder.SubFolders
Set iFile = iFolder.Files
If TreeNum <> 0 Then
Call AddList(iFolder, arr, TreeNum)
End If
For Each gFile In iFile
Call AddList(gFile, arr, TreeNum)
Next
'递归遍历所有子文件夹
For Each nFolder In sFolder
Call GetFolderFile(nFolder.Path, arr, TreeNum + 1)
Next
On Error GoTo 0
End Sub
不显示所有文件夹
Private Sub GetFolderFile(ByVal nPath As String, arr As Variant, TreeNum As Long)
On Error Resume Next
Set iFolder = iFileSys.GetFolder(nPath)
Set sFolder = iFolder.SubFolders
Set iFile = iFolder.Files
'Call AddList(iFolder, arr, TreeNum)
For Each gFile In iFile
Call AddList(gFile, arr, TreeNum)
Next
'递归遍历所有子文件夹
For Each nFolder In sFolder
Call GetFolderFile(nFolder.Path, arr, TreeNum + 1)
Next
On Error GoTo 0
End Sub
脚本来自吾爱的3131210!
千百度
© 版权声明
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
THE END
暂无评论内容