← 返回文档列表

多文件合并

将多个Excel文件中的数据合并到一个工作表中,是数据汇总的常用操作。

合并同一文件夹下的所有工作簿

Sub MergeAllWorkbooks()
    Dim folder As String
    Dim fileName As String
    Dim targetRow As Long

    folder = ThisWorkbook.Path & "\Data\"
    fileName = Dir(folder & "*.xlsx")
    targetRow = 1

    Do While fileName <> ""
        With Workbooks.Open(folder & fileName)
            .Sheets(1).UsedRange.Copy _
                ThisWorkbook.Sheets("汇总").Cells(targetRow, 1)
            targetRow = ThisWorkbook.Sheets("汇总").Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Close False
        End With
        fileName = Dir()
    Loop
    MsgBox "合并完成!"
End Sub

合并当前工作簿的所有工作表

Sub MergeAllSheets()
    Dim ws As Worksheet
    Dim target As Worksheet
    Dim lastRow As Long

    Set target = Sheets.Add(After:=Sheets(Sheets.Count))
    target.Name = "汇总"

    For Each ws In Worksheets
        If ws.Name <> "汇总" Then
            lastRow = target.Cells(Rows.Count, 1).End(xlUp).Row
            If lastRow = 1 And target.Cells(1, 1) = "" Then
                ws.UsedRange.Copy target.Range("A1")
            Else
                ws.UsedRange.Copy target.Range("A" & (lastRow + 1))
            End If
        End If
    Next
End Sub