首页 > 解决方案 > 如何遍历子文件夹?

问题描述

以下代码适用于指定文件夹。

如何让它适用于所有子文件夹X:\DataArchive\CMM\reports\

Sub Copying()

    Dim FSO         As Object
    Dim sFile       As String

    Dim sSFolder    As String
    Dim sDFolder    As String
    Dim fileExtn    As String

    fileExtn = ".PDF"        ''File extension

    sSFolder = "X:\DataArchive\CMM\reports\2019_01\"        ''Source folder
    sDFolder = "C:\Users\sc00709\Desktop\501 28\"        ''Destination folder

    Dim i           As Integer
    i = 2
    Do While i < 74
        With ThisWorkbook

            ''Filename
            sFile = Dir(sSFolder & "364_040_501_0_D_OP270_INSP_" & _
              Worksheets("50128").Cells(i, 2) & "*" & fileExtn)

            ''Create Object for File System
            Set FSO = CreateObject("Scripting.FileSystemObject")

            If Not FSO.FileExists(sSFolder & sFile) Then
            ElseIf Not FSO.FileExists(sDFolder & sFile) Then
                ''Copying
                FSO.CopyFile (sSFolder & sFile), sDFolder, TRUE
            Else
            End If

        End With
        i = i + 1
    Loop

    MsgBox "You did it!", vbInformation, "Done!"
End Sub

标签: excelvba

解决方案


这是遍历文件夹中所有文件夹的代码

Sub Main()
    Dim FileSystem As Object
    Set FileSystem = CreateObject("Scripting.FileSystemObject")

    ExecuteOnAllSubFolders FileSystem.GetFolder("X:\DataArchive\CMM\reports\")
End Sub

Sub ExecuteOnAllSubFolders(Folder)

    Dim SubFolder
    For Each SubFolder In Folder.SubFolders
        ExecuteOnAllSubFolders SubFolder
        'Perform your operations here 

    Next

    'Perform your operations and here

End Sub

推荐阅读