首页 > 解决方案 > 如何使程序循环遍历选定文件夹的所有子文件夹?

问题描述

所以我在 Excel 中开发了(阅读:google -> 复制/粘贴)一个宏,用于将来自众多标准化 Excel 模板的数据编译到一个主文件中。目前,该程序可以遍历单个文件夹中的任意数量的文件,但我希望能够从该文件夹中选择一个级别,并在需要时让它遍历所有子文件夹,但仍然能够在单个文件夹中工作被选中。

打开文件后开始的代码都是在打开的文件上完成的。我还有一些行,但所有这些都在编译文件上运行,因此它不需要包含在文件循环部分中。

我曾尝试使用类似问题中给出的一些解决方案,但它从未对我正确运行。使用导致缺少 End if/with 错误。

'Selects template folder location for macro
Sub LoopThroughFiles()
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.xls*")
        Do While xFileName <> ""
            With Workbooks.Open(xFdItem & xFileName)

'Transfers data from template to master file
    Worksheets("International").Activate
    Range("A4:L4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("Architecture Master Macro_Test.xlsm").Activate
    '"Workbooks.Open "C:\ArchNonMacro.xlsx"
    'Windows("ArchNonMacro.xlsx").Activate

    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    Application.DisplayAlerts = False
    Workbooks(xFileName).Close

End Sub

标签: excelvba

解决方案


推荐阅读