首页 > 其他分享 >Excel自动化工具-工作簿中sheet页合并-可自行选择需要处理的工作簿

Excel自动化工具-工作簿中sheet页合并-可自行选择需要处理的工作簿

时间:2024-07-14 15:28:12浏览次数:10  
标签:sheet wb Excel 合并 工作 destSheet 数据

宝子们可以选择直接下载文章顶部资源包【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中合并一个工作簿中所有工作表(除了指定的一个)到一个名为“合并数据”的工作表的功能。用户可以通过一个文件选择对话框来选择要合并的工作簿。合并过程中,每个工作表的内容前都会加上其名称作为标题,以便于区分。最后,自动调整“合并数据”工作表的列宽以适应内容。

标签:sheet,wb,Excel,合并,工作,destSheet,数据
From: https://blog.csdn.net/2401_83100107/article/details/140415691

相关文章

  • WebKit简介及工作流程
    目录WebKit的架构WebKit的工作流程工作流程示意图结论WebKit是一个开源的浏览器引擎,最初由苹果公司开发,用于其Safari浏览器。它被广泛应用于许多操作系统和平台中,包括macOS、iOS、Windows和Linux。WebKit的主要功能是将HTML、CSS和JavaScript转换成可以在网......
  • 大白话【卷积神经网络】工作原理
    卷积神经网络(ConvolutionalNeuralNetwork,简称CNN)是一种专门设计用于处理具有网格结构的数据(如图像)的神经网络。想象一下,你正在玩一个游戏,游戏的目标是识别图片上的内容。但是,你不能直接看到整个图片,而只能通过一个小窗口(称为“滤波器”或“卷积核”)来观察图片的一部分。每次......
  • 在Linux中,apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
    在Linux中,Apache服务器支持多种工作模式,每种模式都有其特定的应用场景和优缺点。Apache的三种主要工作模式是:Prefork、Worker和Event。以下是对这三种工作模式的详细介绍及其适用场景:1.Prefork模式特点:非线程型、预派生:Prefork模式使用多个子进程来处理请求,每个子进程仅有一......
  • 在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?
    在Linux中,FTP(FileTransferProtocol,文件传输协议)协议支持两种工作模式:主动模式(ActiveMode)和被动模式(PassiveMode)。这两种模式在数据传输的发起和连接建立的方式上存在显著差异。以下分别详细说明这两种模式的工作流程:一、主动模式(ActiveMode)建立控制连接:客户端首先通过TC......
  • GPT - 5 即将到来:对未来工作与生活的影响及应对策略
    文章目录......
  • 导入Excel大量数据如何优化
    导入Excel大量数据如何优化背景线上导入excel的时候发现速度太慢了发现原来的代码是读入所有数据然后按行去数据库比对是否存在,不存在再插入。这样就相当于n条数据要有2n次的数据库请求,以前数据量小的时候没问题,数据量一大就暴露出问题了,下面的测试在数据库......
  • PowerQuery 汇总系列 - 单个Excel工作薄文件、多工作表
    文章目录1.写在前面,多工作表汇总也有坑2.删除自动生成的步骤,重新开始3.删除自动生成的步骤,开始改写4.指定工作表汇总4.1.按单个关键词4.2.按多个关键词Authors@樊笼星海@w180361@Email:[email protected].写在前......
  • 2023-2024第二学期的助教工作总结(计算机网络)
    一、助教工作的具体职责和任务 (包括:你和老师是如何配合的、你和课程其他助教是如何配合的(如果有的话))1.及时跟进学生学习进度每周询问老师教学进度,自己复习知识点,随时准备回复学生问题,并对后续进行安排2.编写题目,拓宽题库每周编写5-8题题目,写出答案,并发给老师审核3.和老师......
  • 根据自定义名称批量创建sheet页,详细操作步骤!
    在VBA(VisualBasicforApplications)中,可以很根据工作表(Sheet1)上的一个名称列表来自动创建多个新的工作表,每个名称对应一个新的工作表。假设Sheet1的A列从A2开始包含了需要创建的工作表名称(A1可以是标题行,如"Sheet名称")。如图所示:第一步:没有officeexcel的宝子请先安装,下载......
  • 这类工作要被大语言模型取代?
    春节前,哈佛的一篇文章带来了思考。美国哈佛大学网站上有一篇文章探讨了ChatGPT对写作工作的代替可能性。文章内容是围绕哈佛大学的一位校聘作家和一位有名望的心理学教授之间的对话展开,主要讲了一个基本的观点:类似ChatGPT这样的人工智能大语言模型可能帮助人们更有效率......