清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
Sub hebin() Dim MyPath As String Dim MyName As String Dim AWbName As String '路径,名称,活动工作簿名称 Dim wb As Workbook, WbN As String '工作簿,工作簿名称和数量 Dim ss As Worksheet '当前sheet Dim ws As Worksheet '待处理sheet Dim Num As Long '待处理工作簿数量 Dim ext As String '扩展名 Dim extn As Long '护展名长度 Dim sn As Long 'sheet循环变量 ext = "*.xlsx"'此处是excel2007以上版本所用扩展名,如果是excel2003则应改为ext="*.xls", extn=4 extn = 5 Application.ScreenUpdating = False MyPath = ActiveWorkbook.Path '当前workbook路径 MyName = Dir(MyPath & "\" & ext) '当前路径下扩展名为ext的文件 AWbName = ActiveWorkbook.Name '当前workbook名称 Num = 0 Do While MyName <> "" If MyName <> AWbName Then Set wb = Workbooks.Open(MyPath & "\" & MyName) '打开扩展名为ext的文件 For sn = 1 To Workbooks(1).Sheets.Count 'Workbooks(1).Activate 'Workbooks(1).Sheets(sn).Select Set ss = Workbooks(1).Sheets(sn) Set ws = wb.Sheets(sn) Call cpsheet(ss, ws, MyName, extn) Next sn Num = Num + 1 '文件计数 WbN = WbN & Chr(13) & wb.Name wb.Close False End If MyName = Dir Loop Range("A1").Select Application.ScreenUpdating = True MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示" End Sub Sub cpsheet(ByRef sesheet As Worksheet, wosheet As Worksheet, strs As String, en As Long) '复制sheet Dim ss1 As Worksheet '当前sheet Dim ws1 As Worksheet '待处理sheet Dim i As Long '行循环变量 Dim j As Long '列循环变量 Dim ssr As Long '当前sheet最下面行 Dim wsr As Long '待处理sheet最下面行 Dim wsc As Long '待处理sheet最右边列 Set ss1 = sesheet Set ws1 = wosheet 'ss1.Select '使ss1成为当前sheet With ss1.UsedRange ssr = .Rows.Count + .Row - 1 '当前sheet最大行数 End With With ws1.UsedRange wsr = .Rows.Count + .Row - 1 '待处理sheet最大行数 wsc = .Columns.Count + .Column - 1 '待处理sheet最大列数 End With ss1.Cells(ssr + 1, 1) = Left(strs, Len(strs) - en) '隔行显示待处理workbook名称 For i = 1 To wsr For j = 1 To wsc ss1.Cells(ssr + 1 + i, j) = ws1.Cells(i, j) '逐个单元格复制 Next j Next i End Sub