【问题标题】:VBA Loop through multiple folders [duplicate]VBA循环遍历多个文件夹[重复]
【发布时间】:2012-10-11 17:33:06
【问题描述】:

可能重复:
get list of subdirs in vba

我正在尝试应用以下代码,该代码适用于在文件夹中的所有文件中运行此 VBA 循环,以使其在一个文件夹中的所有文件夹中运行。

有什么办法可以做到吗?

我有大约 50 个文件夹,每个文件夹都有相同的命名工作簿,所以我需要尝试提高它的效率。

谢谢!

Sub LoopFiles()

    Application.DisplayAlerts = False    
    Dim strDir As String, strFileName As String
    Dim wbCopyBook As Workbook
    Dim wbNewBook As Workbook

    strDir = "C:\Documents and Settings\mburke\Desktop\Occupancy 2013\"
    strFileName = Dir(strDir & "*.xlsm")

    Set wbNewBook = Workbooks.Add

    Do While strFileName <> ""
        Set wbCopyBook = Workbooks.Open(strDir & strFileName)
        wbCopyBook.Sheets(1).Copy Before:=wbNewBook.Sheets(1)
        wbCopyBook.Close False
        strFileName = Dir
    Loop

    Application.DisplayAlerts = True
End Sub

【问题讨论】:

标签: vba loops excel


【解决方案1】:

当然可以!只需添加另一个为文件夹执行 DIR 的 LoopDirectories 方法。

将LoopF​​iles 方法改为接受目录参数:

Sub LoopFiles(directory As String)

    Application.DisplayAlerts = False

    Dim strDir As String, strFileName As String
    Dim wbCopyBook As Workbook
    Dim wbNewBook As Workbook


    strFileName = Dir(directory & "*.xlsm")

    Set wbNewBook = Workbooks.Add

    Do While strFileName <> ""
        Set wbCopyBook = Workbooks.Open(directory & strFileName)
        wbCopyBook.Sheets(1).Copy Before:=wbNewBook.Sheets(1)
        wbCopyBook.Close False
        strFileName = Dir
    Loop

    Application.DisplayAlerts = True
End Sub

然后在 LoopDirecotries 方法中为每个文件夹调用 LoopF​​iles 方法。

【讨论】:

  • 但这并没有解释如何调用每个文件夹
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多