Excel自动化工具-工作簿中sheet页合并-可自行选择需要处理的工作簿
创始人
2025-01-08 22:39:24
0

宝子们可以选择直接下载文章顶部资源包【Excel自动化工具-工作簿中sheet页合并.xlsm】(或者在博主的资源里下载),该资源功能为:合并sheet页

或者也可以自己编写宏代码,文章最后有附上源代码

没有office excel 的宝子请先安装,下载教程请点击下面链接查看:

excel、word、ppt 下载安装步骤整理

需求展示:把工作簿 ‘测试.xlsx’ 里的sheet页的数据内容(除名为‘合并数据’sheet页除外),全部合并到‘名为 ‘合并数据’sheet页’ 里面(自动生成),如下图所示:

使用方式:直接打开资源文件使用

>>打开下载的 【自定义合并sheet页.xlsm 】文件>>点击 ‘开始合并sheet页’ 按钮>>选择你要操作的工作簿即可(详细可参考文件中的“使用说明”)

想要自己动手的宝子可以点击以下链接查看博文,里参考里面的编写宏和调用宏的详细步骤:

根据自定义名称批量创建sheet页,详细操作步骤!

代码示例:

' 这个函数接受一个Workbook对象和一个工作表名称(默认为"合并数据") ' 然后在这个Workbook中合并所有工作表(除了指定的工作表) Function MergeAllSheets(ByRef wb As Workbook, Optional ByVal destSheetName As String = "合并数据")     Dim ws As Worksheet     Dim destSheet As Worksheet     Dim lastRow As Long     Dim sheetName As String      ' 检查是否存在指定的工作表,如果不存在则创建     On Error Resume Next     Set destSheet = wb.Sheets(destSheetName)     If destSheet Is Nothing Then         Set destSheet = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count))         destSheet.Name = destSheetName     End If     On Error GoTo 0      ' 清空合并数据工作表的内容     destSheet.Cells.Clear      ' 遍历所有工作表(除了合并数据工作表)     For Each ws In wb.Sheets         If ws.Name <> destSheet.Name Then             ' 在总Sheet中添加工作表名称(加上“.sheet”后缀)             sheetName = ws.Name & ".sheet"             lastRow = destSheet.Cells(destSheet.Rows.Count, 1).End(xlUp).Row + 1             destSheet.Cells(lastRow, 1).Value = sheetName              ' 复制当前工作表的内容到总Sheet             lastRow = lastRow + 1 ' 移动到下一个空白行             ws.UsedRange.Copy Destination:=destSheet.Cells(lastRow, 1)         End If     Next ws      ' 自动调整列宽     destSheet.Columns.AutoFit End Function  ' 这个子程序让用户选择一个工作簿,并在该工作簿中调用MergeAllSheets函数 Sub MergeSheetsFromSelectedWorkbook()     Dim wb As Workbook     Dim filePath As Variant      ' 允许用户选择一个文件     filePath = Application.GetOpenFilename("Excel Files (*.xlsm), *.xlsm")      ' 如果用户选择了文件     If filePath <> "False" Then         ' 打开工作簿         Set wb = Workbooks.Open(filePath)          ' 调用合并函数         MergeAllSheets wb          ' 可选:保存并关闭工作簿         ' wb.Save         ' wb.Close     End If End Sub

代码说明:

这个资源包含两个主要部分:一个函数MergeAllSheets和一个子程序MergeSheetsFromSelectedWorkbook。它们协同工作,用于在一个Excel工作簿中合并所有工作表(除了指定的一个工作表)的数据到一个名为“合并数据”的工作表中。
MergeAllSheets 函数
功能描述:
该函数接受一个Workbook对象(wb)和一个可选的工作表名称(默认为“合并数据”)。它遍历工作簿中的所有工作表(除了指定的“合并数据”工作表),将每个工作表的名称(加上“.sheet”后缀)和工作表内容复制到“合并数据”工作表中。每个工作表的内容前都会加上其名称作为标题,以便于区分。
实现细节:
检查并创建目标工作表:如果“合并数据”工作表不存在,则创建一个新的工作表并命名为“合并数据”。
清空目标工作表:在合并之前,清空“合并数据”工作表的所有内容。
遍历工作表:遍历工作簿中的所有工作表,对于每个工作表,如果它不是“合并数据”工作表,则执行以下操作:
将工作表名称(加上“.sheet”后缀)写入“合并数据”工作表的下一行。
将当前工作表的内容复制到“合并数据”工作表的下一个空白行。
自动调整列宽:最后,自动调整“合并数据”工作表的所有列宽以适应内容。
使用方式:
该函数需要在VBA环境中被调用,并传入一个Workbook对象和一个可选的工作表名称。
MergeSheetsFromSelectedWorkbook 子程序
功能描述:
该子程序允许用户通过Excel的文件选择对话框选择一个工作簿文件,然后调用MergeAllSheets函数来合并该工作簿中的所有工作表(除了“合并数据”工作表)。
实现细节:
选择文件:使用Application.GetOpenFilename方法显示文件选择对话框,让用户选择一个Excel工作簿文件。
打开工作簿:如果用户选择了一个文件,则打开该工作簿。
调用合并函数:调用MergeAllSheets函数,传入打开的工作簿对象,执行合并操作。
可选操作:注释掉的代码段显示了如何在合并后保存并关闭工作簿的示例。
使用方式:
该子程序可以直接在VBA编辑器中运行,或者通过为其分配一个按钮或快捷键在Excel界面中触发。
总结
这段代码实现了在Excel VBA中合并一个工作簿中所有工作表(除了指定的一个)到一个名为“合并数据”的工作表的功能。用户可以通过一个文件选择对话框来选择要合并的工作簿。合并过程中,每个工作表的内容前都会加上其名称作为标题,以便于区分。最后,自动调整“合并数据”工作表的列宽以适应内容。

相关内容

热门资讯

德普之星辅助器app!hard... 德普之星辅助器app!hardrock作弊(透视)本来存在有挂(介绍教程)1、任何德普之星辅助器ap...
透视工具!德扑胜率 胜率 工具... 透视工具!德扑胜率 胜率 工具,天天欢乐德州可以开挂吗(详细辅助2025新版教程);天天欢乐德州可以...
aapoker透视辅助!智星德... 一、aapoker透视辅助简介了解软件请加微:136704302aapoker透视辅助是一款在线扑克...
aapoker透视怎么用!we... aapoker透视怎么用!wepoker透视破解版(透视)好像存在有挂(透明挂教程);所有人都在同一...
透视了解!wepoker私人局... 《透视了解!wepoker私人局确实真的有挂,governorofpoker3作弊(详细辅助总结教程...
德州ai辅助软件!WePoKe... 德州ai辅助软件!WePoKe透明挂(透视)最初真的是有挂(详细辅助一分钟揭秘)1、下载好德州ai辅...
wpk辅助软件!菠萝辅助器免费... wpk辅助软件!菠萝辅助器免费版的功能介绍(透视)切实真的有挂(辅助教程);运菠萝辅助器免费版的功能...
透视好友!WePoKer作弊功... WePoke高级策略深度解析‌;透视好友!WePoKer作弊功能透视教程,wepoker透视助手(详...
wpk透视辅助!aapoker... wpk透视辅助!aapoker发牌机制(透视)果然有挂(详细辅助科技介绍)1、下载好aapoker发...
透视系统!wepoker透视脚... 透视系统!wepoker透视脚本链接,wepoker辅助透视方法(详细辅助扑克教程);(需添加指定Q...