VBA用fso对象获取指定类型文件的完整路径(含子目录)

图(1)

      上一篇文章跟大家介绍的获取文件路径的方法是不包含子目录的,今天继续跟大家分享用fso对象获取子目录文件路径的方法,代码并不复杂,关键是要懂得设计思路,代码如下:

Public fileList As String, fileCount As Integer

Sub GetTxtFile()

    Dim fileStyle As String
    Dim filePath As String
    
    fileStyle = "txt"    ' 指定文件类型(扩展名)
    filePath = "D:\Users\Hero\Desktop\办公室"
    
    Call GetAllFilePath(filePath, fileStyle)
    
    Debug.Print fileList & vbCrLf & "执行完毕!总共有" & fileCount & "个" & fileStyle & "文件"
    
    '清理公共变量,避免影响下次运行
    fileList = ""
    fileCount = 0
    
End Sub

Sub GetAllFilePath(filePath As String, fileStyle As String)
'
' 用fso对象获取指定类型文件的路径(含子目录)
'
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.folderExists(filePath) Then
        MsgBox "找不到路径:" & vbCrLf & filePath, vbOKOnly + vbExclamation, "错误"
        Exit Sub
    End If

    Dim file As Object
    Dim folder As Object

    Set folder = fso.GetFolder(filePath)
    
    '遍历主目录的每个文件
    For Each file In folder.Files
        If LCase(fso.GetExtensionName(file.path)) = fileStyle Then
            If Len(fileList) = 0 Then
                fileList = file.path
            Else
                fileList = fileList & vbCrLf & file.path
            End If
            fileCount = fileCount + 1
        End If
    Next file
    
    '遍历所有子目录
    For Each subfolder In folder.SubFolders
        Call GetAllFilePath(subfolder.path, fileStyle)    ' 调用程序自身处理子目录
    Next subfolder
    
End Sub

      执行结果如下图:

图(2)

      使用以上方法你只需要重新定义filePath和fileStyle变量的值即可,另外通过获取CMD命令Dir文件列表也可以实现同样的效果,感兴趣的朋友可以浏览本人分享的另一篇文章《VBA如何获取CMD命令的运行结果》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TOMaster.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值