合并多张工作薄的工作表到新的工作薄中,工作表不汇总。

Sub MergeWb()' 合并多张工作薄,工作表不汇总
' 设置错误处理,当遇到错误时跳转到Errhandler标签处
On Error GoTo Errhandler
' 声明变量
Dim FileOpen, wkb As Workbook, wks As Worksheet
Dim i As Integer
' 关闭屏幕更新,以提高代码执行速度
Application.ScreenUpdating = False
' 使用With语句引用当前工作簿
With ThisWorkbook
' 更改当前驱动器为当前工作簿所在路径
ChDrive .Path
' 更改当前目录为当前工作簿所在路径
ChDir .Path
' 弹出文件选择对话框,允许用户选择多个Excel文件
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xls;*.xlsx), *.xls;*.xlsx", MultiSelect:=True, Title:="合并工作薄")
' 设置循环计数器i的初始值为1
i = 1
' 循环直到处理完所有选中的文件
While i <= UBound(FileOpen)
' 打开选中的工作簿
Set wkb = Workbooks.Open(FileOpen(i))
' 将打开的工作簿的所有工作表复制到当前工作簿的末尾
wkb.Sheets().Copy After:=.Sheets(.Sheets.Count)
' 关闭打开的工作簿,不保存更改
wkb.Close False
' 递增循环计数器X
i = i + 1
Wend
End With
' 错误处理:如果发生错误,则执行Errhandler标签处的代码
Errhandler:
' 重新开启屏幕更新
Application.ScreenUpdating = True
' 检查是否有错误发生
If Err <> 0 Then
' 如果有错误,则显示错误描述
MsgBox Err.Description
End If
End Sub