使用VBA合并多个Excel工作簿(1)

有时,需要将多个Excel工作簿中的工作表合并到一个工作簿中。有多种合并工作簿的情形,下面先给出一种合并多个工作簿的VBA范例,供参考。
例如,需要合并的工作簿在“D:\示例\数据记录\”文件夹中,这里假设有两个工作簿test1.xls、test2.xls(当然,不限于两个),test1.xls工作簿中含有三张工作表,test2.xls工作簿中含有两张工作表,现在使用一段VBA代码合并这两个工作簿到一个新工作簿中。先给出代码如下:
Sub CombineWorkbooks()
    Dim strFileName As String
    Dim wb As Workbook
    Dim ws As Object
    
    ‘包含工作簿的文件夹,可根据实际修改
    Const strFileDir As String = “D:\示例\数据记录\”
    
    Application.ScreenUpdating = False
    
    Set wb = Workbooks.Add(xlWorksheet)
    strFileName = Dir(strFileDir & “*.xls”)
    
    Do While strFileName <> vbNullString
        Dim wbOrig As Workbook
        Set wbOrig = Workbooks.Open(Filename:=strFileDir & strFileName, ReadOnly:=True)
        strFileName = Left(Left(strFileName, Len(strFileName) - 4), 29)
        
        For Each ws In wbOrig.Sheets
            ws.Copy After:=wb.Sheets(wb.Sheets.Count)
            If wbOrig.Sheets.Count > 1 Then
                wb.Sheets(wb.Sheets.Count).Name = strFileName & ws.Index
            Else
                wb.Sheets(wb.Sheets.Count).Name = strFileName
            End If
        Next
        
        wbOrig.Close SaveChanges:=False
        
        strFileName = Dir
        
    Loop
    
    Application.DisplayAlerts = False
    wb.Sheets(1).Delete
    Application.DisplayAlerts = True
    
    Application.ScreenUpdating = True
    
    Set wb = Nothing
                
End Sub

结果如下图所示:

合并到新工作簿中的工作表分别以原工作簿名加索引值命名。
示例下载:合并工作簿示例
将示例解压后放置到D盘中,或者修改代码中的文件路径以代表文件夹的位置。


提示:您可以在评论中使用HTML标签,且任何与HTML标签相同的符号都会被理解为HTML标签并以相应的格式显示.如果您的评论中有代码,可以使用相应的标签,例如,如果有VB或VBA代码,则可以使用[vb]标签,即[vb]放置的代码[/vb],这样会很清晰地显示代码.

2条评论

  1. 鬼故事 说到:

    呵呵,帮你PP顶!也请来鬼故事看看……

  2. 童话故事 说到:

    呵呵,帮你PP顶!也请来童话故事看看……

留下回复