#VBA 微软office办公软件开发 功能:合并多个表格

 有时间我会继续分享一些其他语言,用于对传感器等控制的。比如,如何通过ESP8266来控制电机实现开关功能等。

你还在为WPS不断提高的VIP费用而烦恼吗?分享一些我在大学毕业后使用过的代码!该代码是被office公开的!只需使用正版office或者office可以开启开发者功能。有时间我会从初级发到高级应用!此语言并不难,我也只花了一个星期就掌握了。

使用 VBA 代码合并 Excel 表格:详细教程
在日常的数据处理工作中,我们常常需要将多个 Excel 表格合并成一个。今天,我将为大家分享一段使用 VBA(Visual Basic for Applications)编写的代码,它可以轻松地实现 Excel 表格的合并功能。
一、代码功能概述
这段 VBA 代码的主要功能是将指定文件夹下的所有 Excel 文件(.xlsx 格式)进行合并。它会逐个打开这些文件,将每个文件的第一个工作表内容复制到一个新创建的目标工作簿中,并将每个工作表以原文件名命名,最后将合并后的结果保存为一个新的 Excel 文件。
二、代码解析
(一)变量声明
这里声明了一系列变量,用于存储文件夹路径、文件名、工作簿对象、工作表对象以及行号等信息,还有用于创建文件夹选择对话框的变量。
(二)选择文件夹
代码创建了一个文件夹选择对话框。如果用户选择了一个文件夹,就将其路径存储起来;如果用户取消操作,则弹出提示消息并退出程序。
(三)创建目标工作簿
这行代码新建了一个空白的目标工作簿,用于存放合并后的内容。
(四)遍历文件并合并
首先,获取指定文件夹下符合条件(.xlsx 格式)的第一个文件名。然后进入循环,只要文件名不为空,就执行以下操作:
打开源工作簿,获取其第一个工作表。
在目标工作簿中新建一个工作表,并将源工作表的已使用区域复制到目标工作表的 A1 单元格开始的区域。
关闭源工作簿(不保存)。
找到目标工作表中 A 列的最后一行,并计算下一个空行的位置。
将目标工作表的名称设置为当前处理的文件名。
获取下一个文件名,继续循环。
(五)保存和关闭目标工作簿
最后,将目标工作簿保存为 “合并结果.xlsx” 文件到指定文件夹,关闭目标工作簿,并弹出提示消息告知用户合并已完成。
三、使用方法
打开 Excel,按下Alt + F11组合键,打开 VBA 编辑器。
在 VBA 编辑器中,将上述代码复制到一个新的模块(如果没有模块,可以通过 “插入” - “模块” 来创建)。
运行这个宏(可以通过点击 “运行” 按钮或者使用快捷键F5),然后按照提示选择包含要合并的 Excel 文件的文件夹,程序就会自动完成合并操作。
希望这段代码和讲解对你在 Excel 数据合并方面有所帮助,让你更高效地处理数据!如果有任何问题,欢迎在评论区留言。

Attribute VB_Name = "模块1"
Sub 合并Excel表格()
    Dim 文件夹路径 As String
    Dim 文件名 As String
    Dim 目标工作簿 As Workbook
    Dim 源工作簿 As Workbook
    Dim 目标工作表 As Worksheet
    Dim 源工作表 As Worksheet
    Dim 最后一行 As Long
    Dim 下一个空行 As Long
    Dim 文件夹对话框 As FileDialog
    
    ' 创建文件夹对话框对象
    Set 文件夹对话框 = Application.FileDialog(msoFileDialogFolderPicker)
    
    ' 显示文件夹选择对话框
    If 文件夹对话框.Show = -1 Then
        ' 用户已经选择了一个文件夹
        文件夹路径 = 文件夹对话框.SelectedItems(1) & "\"
    Else
        ' 用户取消了操作
        MsgBox "未选择文件夹。操作已取消。"
        Exit Sub
    End If
    
    ' 新建一个目标工作簿
    Set 目标工作簿 = Workbooks.Add
    
    ' 循环遍历文件夹下的所有Excel文件
    文件名 = Dir(文件夹路径 & "*.xlsx")
    Do While 文件名 <> ""
        ' 打开源工作簿
        Set 源工作簿 = Workbooks.Open(文件夹路径 & 文件名)
        
        ' 复制源工作表到目标工作簿
        Set 源工作表 = 源工作簿.Sheets(1)
        Set 目标工作表 = 目标工作簿.Sheets.Add(After:=目标工作簿.Sheets(目标工作簿.Sheets.Count))
        源工作表.UsedRange.Copy 目标工作表.Range("A1")
        
        ' 关闭源工作簿
        源工作簿.Close False
        
        ' 找到目标工作表的最后一行
        最后一行 = 目标工作表.Cells(目标工作表.Rows.Count, "A").End(xlUp).Row
        
        ' 下一个空行
        下一个空行 = 最后一行 + 1
        
        ' 设置目标工作表的名称
        目标工作表.Name = 文件名
        
        ' 继续处理下一个文件
        文件名 = Dir
    Loop
    
    ' 保存目标工作簿
    目标工作簿.SaveAs 文件夹路径 & "合并结果.xlsx"
    
    ' 关闭目标工作簿
    目标工作簿.Close False
    
    MsgBox "已完成合并。"
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值