VBA 选择指定文件夹,将文件夹名放入A1,如果有文件,则将内部文件名放入第二列

这是一个VBA宏,用于遍历指定的文件夹及其所有子文件夹,将找到的文件路径填充到Excel工作表的B列。用户首先通过文件对话框选择目标目录,然后宏会清空A列并打印文件夹名,最后遍历文件和子文件夹,逐行填充文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Public Function FindAllFiles(sFolder As Folder)

    Dim f As File

    Dim oFld As Folder

    For Each f In sFolder.Files                      '遍历目录下所有文件
    
       If index >= 1 Then  '跳过开头没有值的下标
        Worksheets(1).Range("B" & index).Value = f.Path                '将文件路径及文件名填充到表的B列
        
        End If
        index = index + 1
    Next

    For Each oFld In sFolder.SubFolders              '遍历子文件夹

        FindAllFiles oFld                            '嵌套调用自身

    Next

End Function
Sub 遍历选定目录()

    Dim fso As New FileSystemObject

    Dim sFolder As Folder, sPath As String

    Dim dig As Object
    Dim index As Long

    Set dig = Application.FileDialog(msoFileDialogFolderPicker)

    If dig.Show = -1 Then sPath = dig.SelectedItems(1)   '弹出目录选择窗口
    Worksheets(1).Range("A:A").ClearContents '清空A列
     Worksheets(1).Range("A1").Value = sPath '打印文件夹名
    

    If fso.FolderExists(sPath) Then                      '判断文件是否存在

        Set sFolder = fso.GetFolder(sPath)

        index = 1                                            '初始化

        Worksheets(1).Range("B:B").ClearContents

        FindAllFiles sFolder                             '调用函数

        Range("B1").Select

    Else

        Debug.Print (Now & " 未选择正确的目录!")         '控制台打印日志

    End If

End Sub
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值