目的:将工作簿下所有工作表合并到一个工作表中
这里有两种VBA代码可以实现:
方法一:
Sub Run()
Dim tar_wb As Workbook
Set tar_wb = CreateWorkbook
Call MergeContent(tar_wb)
End Sub
'函数名: CreateWorkbook
'接受参数:无
'返回值:Workbook(返回创建的Workbook)
'说明:创建一个Excel文件,存放合并的数据
Private Function CreateWorkbook() As Workbook
Dim fileName As String
Dim filePath As String
Dim nowDate As String
nowDate = CDate(Now())
nowDate = Replace(nowDate, ":", "")
nowDate = Replace(nowDate, "/", "")
nowDate = Replace(nowDate, " ", "_")
filePath = ThisWorkbook.Path & ""
fileName = filePath & nowDate & "_汇总表.xlsx"
Dim newBook As Workbook
Set newBook = Workbooks.Add
With newBook
.SaveAs fileName
End With
Set CreateWorkbook = newBook
End Function
'函数名: MergeContent
'接受参数:targetWorkbook(合并后的数据存放的Workbook对象)
'返回值:无
'说明:将数据依次粘贴到目标Workbook对象、即EXCEL中。
Private Function MergeContent(targetWorkbook As Workbook)
Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, 1).End(xlToRight)).Copy _
targetWorkbook.Sheets("Sheet1").Range("A65536").End(xlUp)
For Each sht In ThisWorkbook.Worksheets
sht.Range("A1").CurrentRegion.Offset(1, 0).Copy _
targetWorkbook.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0)
Next
targetWorkbook.Close True
方法二:
Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
For j = 1 To Sheets.Count
If Sheets(j).Name <> ActiveSheet.Name Then
X = Range("A65536").End(xlUp).Row + 1
Sheets(j).UsedRange.Copy Cells(X, 1) '复制内容
End If
Next
Range("B1").Select '表明从B1单元格开始复制合并的内容
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub
End Function
欢迎学习交流 | 如侵即删