
excel
宏1:把当前文件夹下所有excel的sheet合并到当前表里VBASub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As Workbook, WbN As StringDim G As LongDim Num As LongDim BOX As StrinGAPplication.ScreenUpdating = FalseMyPath = ActiveWorkbook.PathMyName = Dir(MyPath & & *.xls)AWbName = ActiveWorkbook.NameNum = 0Do While MyName If MyName AWbName ThenSet Wb = Workbooks.Open(MyPath & & MyName)Num = Num + 1With Workbooks(1).ActiveSheet.Cells(.Range(A65536).End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)For G = 1 To Sheets.CountWb.Sheets(G).UsedRange.Copy .Cells(.Range(A65536).End(xlUp).Row + 1, 1)NextWbN = WbN & Chr(13) & Wb.NameWb.Close FalseEnd WithEnd IfMyName = DirLoopRange(A1).SelectApplication.ScreenUpdating = TrueMsgBox 共合并了 & Num & 个工作薄下的全部工作表。如下: & Chr(13) & WbN, vbInformation, 提示End Sub
宏2:多个文件合并成一个文件,每个文件一个sheetVBASub CombineWorkbooks()Dim FilesToOpen, ftDim x As IntegerApplication.ScreenUpdating = FalSEOn Error GoTo errhandlerFilesToOpen = Application.GetOpenFilename _(FileFilter:=Microsoft excel文件(*.xls), *.xls, _MultiSelect:=True, Title:=要合并的文件)If TypeName(FilesToOpen) = Boolean ThenMsgBox 没有选中文件Exit SubEnd Ifx = 1Workbooks.Open Filename:=FilesToOpen(1)Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)For i = 2 To UBound(FilesToOpen)Set wb = Workbooks.Open(Filename:=FilesToOpen(i))For Each ws In wb.Sheetsws.Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)Next wswb.CloseNext iApplication.ScreenUpdating = TrueMsgBox 合并完成!, vbInformation, 提示Exit SUberrhandler:MsgBox 出错了,检查一下文件有没有问题, vbCritical, 错误End Sub

VBA
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号