【EXCEL VBA】获取文件夹的子文件夹名称和文件名称

网上搜的一段代码加上自己的理解

------------------------------------------------------------------------------------------------------------------------

'-------------------------------函数--------------------------------------------------------
Function get_folder_file(pth)
    Set fso = CreateObject("Scripting.FileSystemObject").GetFolder(pth)
    ’遍历单文件
    For Each 单文件 In fso.Files
            s_1 = fso.Path
            s_2 = 单文件.Name
            s_3=fso.Path & "\" & 单文件.Name
            if  s_2 like "*xls*"then
                set wb = workbooks.open(单文件.fullName)
            


                wb.Close Savechanges:=False
                'wb.Close Savechanges:=true
            end if    
            DoEvents '转让控制权
    Next
    '遍历文件夹
    For Each Folder In fso.SubFolders
        Call get_folder_file(Folder.Path)
    Next
    Set fso = Nothing
End Function
'-------------------------------------------------------------------------------------------

'------------------------------子过程------------------------------------------------------
 
Sub test_1()
    dim pth$
    pth = "Z:\11111"
    'pth = thisworkbook.path
    Call get_folder_file(pth) 
End Sub

Sub test_2()
    dim pth$
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "选择文件夹"
        If .Show Then
            pth = .SelectedItems(1)
        End If
    End With
    If IsEmpty(pth) Then Exit Sub     '如果按取消键,退出

    Call get_folder_file(pth)
End Sub

总结:函数是不能直接执行的。

fso 子对象有文件夹集合和文件集合,分别为fso.SubFolders和fso.Files

函数get_folder_file(pth )需要一个pth也就是文件夹的路径为参数,第一次循环fso是最外围的文件夹路径,第二次循环是把主文件夹的子文件夹路径赋值给fso,再获取其子文件和子文件夹,依次往内层文件夹读取路径。

如果想快速一个文件夹的路径,可以创建其桌面快捷键,右击,属性,就可以复制了。

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值