【问题标题】:Merge a list of excel files into a new excel book将 excel 文件列表合并到新的 excel 书中
【发布时间】:2017-06-23 22:22:42
【问题描述】:

我需要创建一个宏来合并目录中的 excel 文件列表。 该文件夹包含我不想选择的其他文件。所以,我需要指定文件列表(例如,选择所有名称包含“02.08.xlsx”的文件)。

这是我第一次使用 VBA,所以请考虑到这一点。 我已经尝试了一些方法,但我认为我总是在文件选择方面遇到问题。

这是我迄今为止尝试过的,但没有奏效:

Sub MergeWorkbooks()
Dim FolderPath As String
Dim Filename As String
Dim ListFilenames As Variant
Dim Sheet As Worksheet
Application.ScreenUpdating = False
FolderPath = CurDir()
ListFilenames = Array("*02.08.02.01*.xlsx", "*02.08.13.01*.xlsx")
For i = 1 To 2
    Filename = Dir(FolderPath & ListFilenames(i))
    Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
    For Each Sheet In ActiveWorkbook.Sheets
    Sheet.Copy After:=ThisWorkbook.Sheets(1)
    Next Sheet
    Workbooks(Filename).Close
    Filename = Dir()
Next i
Application.ScreenUpdating = True
End Sub

【问题讨论】:

  • 看看这个 Excel VBA 代码:extendoffice.com/documents/excel/… 有了它,您可以列出路径上的所有文件或文件夹,并且您可以使用该数据过滤任何您想要的
  • For i = 1 To 2 is to be changed For i = 0 To 1
  • @Dy.Lee 谢谢。还是不行。我在定义文件名后放置了一个检查,但它始终为空白。当我定义我猜的文件名时出了点问题。
  • 您错过了文件路径分隔符。 Workbooks.Open Filename:=FolderPath & "\" Filename, ReadOnly:=True
  • @Dy.Lee 这就是问题所在!谢谢!

标签: excel vba


【解决方案1】:

代码应该是这样的。

Sub MergeWorkbooks()
    Dim FolderPath As String
    Dim Filename As String
    Dim ListFilenames As Variant
    Dim Sheet As Worksheet
    Application.ScreenUpdating = False
    FolderPath = CurDir()
    ListFilenames = Array("*02.08.02.01*.xlsx", "*02.08.13.01*.xlsx")
    For i = 0 To 1
        Filename = Dir(FolderPath & "\" & ListFilenames(i))
        Do While Filename <> ""
            Workbooks.Open Filename:=FolderPath & "\" & Filename, ReadOnly:=True
            For Each Sheet In ActiveWorkbook.Sheets
            Sheet.Copy After:=ThisWorkbook.Sheets(1)
            Next Sheet
            Workbooks(Filename).Close
            Filename = Dir()
        Loop
    Next i
    Application.ScreenUpdating = True
End Sub

【讨论】:

  • 如上面的 cmets 所述,问题在于索引(应该从零开始)和缺少文件路径分隔符“\”。
【解决方案2】:

使用下面链接中的插件。

https://www.rondebruin.nl/win/addins/rdbmerge.htm

这会做你想做的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2013-09-15
    • 2011-08-29
    相关资源
    最近更新 更多