首页 ExcelVBA批量合并工作表
文章
取消

ExcelVBA批量合并工作表

以下是一个示例的Excel VBA代码,可以用于批量合并多个工作簿中的工作表到一个目标工作簿中。在这个示例中,我们将使用一个目标工作簿来合并所有工作表,但你可以根据需要进行调整。注意,这段代码假设源工作簿位于指定的文件夹路径下,并且源工作簿的扩展名为 .xlsx。你可以根据需要修改文件夹路径和文件扩展名。另外,代码还假设目标工作簿已经打开,你可以将 mainWorkbook 设置为你希望合并工作表的目标工作簿,或者在代码中打开目标工作簿。在运行代码之前,请确保备份了目标工作簿中的数据,以防意外情况发生。最好在测试环境中运行代码,确保它按预期工作。

Sub MergeSheetsFromWorkbooks()
    Dim mainWorkbook As Workbook
    Dim sourceWorkbook As Workbook
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim targetRow As Long
    Dim fileName As String
    Dim folderPath As String
    
    ' 设置目标工作簿
    Set mainWorkbook = ThisWorkbook ' 或者根据需要指定其他目标工作簿
    
    ' 设置包含源工作簿的文件夹路径
    folderPath = "C:\Users\Administrator\Desktop\Workbooks\"
    
    ' 循环遍历文件夹中的所有工作簿
    fileName = Dir(folderPath & "*.xlsx")
    Do While fileName <> ""
        ' 打开源工作簿
        Set sourceWorkbook = Workbooks.Open(folderPath & fileName)
        
        ' 循环遍历源工作簿中的所有工作表
        For Each sourceSheet In sourceWorkbook.Sheets
            ' 在目标工作簿中添加新工作表
            Set targetSheet = mainWorkbook.Sheets.Add(After:=mainWorkbook.Sheets(mainWorkbook.Sheets.Count))
            
            ' 将源工作表的内容复制到目标工作表
            sourceSheet.UsedRange.Copy targetSheet.Cells(1, 1)
        Next sourceSheet
        
        ' 关闭源工作簿
        sourceWorkbook.Close False
        
        ' 获取下一个文件名
        fileName = Dir
    Loop
End Sub

ExcelVBA批量转换为PDF

ExcelVBA全局唯一标识符GUID