如何使用 VBA 合并多个 Excel 工作簿

图片[1]-如何使用 VBA 合并多个 Excel 工作簿-零度会员

在处理各种数据源时,您可能经常难以编译多个工作簿和工作表,然后才能获得一个最终数据。想象一下这样一种情况,在您开始新的一天之前,您有数百个工作簿要组合。

没有人愿意花无数时间处理不同的来源,打开每个工作簿,复制和粘贴来自不同工作表的数据,然后最终制作一个合并的工作簿。如果 VBA 宏可以为您做到这一点怎么办?

使用本指南,您可以在几分钟内创建自己的 Excel VBA 宏代码来合并多个工作簿(如果数据文件很多)。

创建自己的 VBA 宏代码的先决条件

您需要一个工作簿来存放 VBA 代码,而其余的源数据工作簿是分开的。此外,创建一个合并的工作簿以存储所有工作簿中的合并数据。

在您的首选位置创建一个文件夹Consolidation以存储您的所有源工作簿。当宏运行时,它将切换存储在此文件夹中的每个工作簿,从各个工作表中复制内容,并将其放置在合并工作簿中。

创建自己的 Excel VBA 代码

一旦先决条件不受影响,就该深入研究代码并开始修改基础知识以使其适应您的要求。

有关的:您必须知道的高级 Microsoft Excel 功能

在 Excel 上按Alt+F11键以打开 VBA 宏代码编辑器。粘贴下面编写的代码并将文件保存为启用宏的工作簿(扩展名为.xlsm)。

 


Sub openfiles()

'declare the variables used within the VBA code

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

'disable these functions to enhance code processing

With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

'change the path of the folder where your files are going to be saved

MyFolder = InputBox("Enter path of the Consolidation folder") & "\"

'define the reference of the folder in a macro variable

MyFile = Dir(MyFolder)

'open a loop to cycle through each individual workbook stored in the folder

Do While Len(MyFile) > 0

'activate the Consolidation workbook

Windows("Consolidation").Activate

'calculate the last populated row

Range("a1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select

'open the first workbook within the Consolidation folder

Workbooks.Open Filename:=MyFolder & MyFile

Windows(MyFile).Activate

'toggle through each sheet within the workbooks to copy the data

Dim ws As Worksheet
For Each ws In Sheets
 
 ws.Activate
 ws.AutoFilterMode = False
 
 'ignore the header and copy the data from row 2
 If Cells(2, 1) = "" Then GoTo 1
 
 
 GoTo 10
 
1: Next

10: Range("a2:az20000").Copy

Windows("Consolidation").Activate

'paste the copied contents

ActiveSheet.Paste

Windows(MyFile).Activate

'close the open workbook once the data is pasted

ActiveWorkbook.Close

'empty the cache to store the value of the next workbook

MyFile = Dir()

'open the next file in the folder

Loop

'enable the disabled functions for future use

With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With


End Sub

VBA 代码解释

代码的第一部分是定义一个包含所有 VBA 代码的子例程。使用sub定义子例程,后跟代码名称。子名称可以是任何东西;理想情况下,您应该保留一个与您将要编写的代码相关的名称。

有关的:学习 Excel 提示和技巧的网站和博客

Excel VBA 理解用户创建的变量及其用dim(维度)声明的相应数据类型。

为了提高代码的处理速度,您可以关闭屏幕更新并禁止所有警报,因为这会减慢代码执行速度。

系统将提示用户输入存储数据文件的文件夹路径。创建一个循环来打开存储在文件夹中的每个工作簿,复制每个工作表中的数据,并将其附加到Consolidation工作簿。

Excel VBA 代码片段

合并工作簿已激活,以便 Excel VBA 可以计算最后填充的行。选择工作表中的最后一个单元格,并使用偏移函数在工作簿中计算最后一行。当宏开始从源文件附加数据时,这非常有用。

当循环打开第一个源文件时,过滤器将从每个工作表中删除(如果存在),并且从 A2 到 AZ20000 的数据将被复制并粘贴到合并工作簿中。

重复该过程,直到所有工作簿工作表都附加到主工作簿中。

有关的:掌握高级 Excel 的最佳在线课程

最后,粘贴完所有数据后关闭源文件。打开下一个工作簿,以便 VBA 宏可以为下一组文件重复相同的步骤。

Excel VBA 代码片段

该循环被编码为运行,直到所有文件在主工作簿中自动更新。

基于用户的定制

有时,您不想担心内置提示,尤其是如果您是最终用户。如果您希望在代码中硬编码 Consolidation 文件夹的路径,您可以更改这部分代码:


MyFolder = InputBox("Enter path of the Consolidation folder") & "\"


MyFolder = “Folder path” & "\"

此外,您还可以更改列引用,因为此代码中不包含该步骤。只需将结束列引用替换为您最后填充的列值(在本例中为 AZ)。您需要记住最后填充的行是通过宏代码计算的,因此您只需更改列引用。

要充分利用此宏,您只能使用它来合并相同格式的工作簿。如果结构不同,则不能使用此 VBA 宏。

使用 Excel VBA 宏合并多个工作簿

创建和修改 Excel VBA 代码相对容易,特别是如果您了解代码中的一些细微差别。VBA 系统地贯穿每一行代码并逐行执行。

如果您对代码进行任何更改,您必须确保不要更改代码的顺序,因为这会中断代码的执行。

THE END
点赞2250 分享
电脑驱动下载、更新,管理软件推荐!完全免费、开源、安全-零度会员

电脑驱动下载、更新,管理软件推荐!完全免费、开源、安全

虽然现在市面上有很多的驱动管理软件,但是要么是收费,要么就各种捆绑,很多人都不敢使用,今天给大家介绍一款, 完全免费且开源的驱动下载、更新、管理软件;它就是Snappy Driver Installer ...
admin的头像-零度会员admin
6.5W+2180
Windows 10 /11 优化天花板!开启最强模式,让电脑更丝滑、更流畅!这样玩才更爽 | 零度解说-零度会员

Windows 10 /11 优化天花板!开启最强模式,让电脑更丝滑、更流畅!这样玩才更爽 | 零度解说

https://youtu.be/HSn9E31L4gc1、开启卓越性能代码:https://www.lingdu80.com/1241.html 2、上帝模式代码:https://www.lingdu80.com/5872.html 3、Wintoys 优化神器下载:https://www.lingdu8...
以太坊的“合并”即将让所有以太矿工失业-零度会员

以太坊的“合并”即将让所有以太矿工失业

几周后,以太坊将经历其七年历史上最重大的变化。到目前为止,以太坊区块链一直使用一种称为“工作量证明”的方法得到保护,这种方法消耗的电力比整个比利时国家都要多。下个月转向一种称为“股...
admin的头像-零度会员admin
1.6W+2250
WindTerm 免费开源的SSH远程终端连接器!-零度会员

WindTerm 免费开源的SSH远程终端连接器!

WindTerm ,目前功能最全又最良心的SSH远程终端连接器【官方下载】【备用下载】特征SSH、Telnet、Tcp、Shell、串行实现了 SSH v2、Telnet、Raw Tcp、串行、Shell 协议。支持会话验证时 SSH 自动...
admin的头像-零度会员admin
2.5W+2179
最爽 Windows 安装!全自动、无人值守、高度自定义,系统清爽流畅,让电脑瞬间起飞! | 零度解说-零度会员

最爽 Windows 安装!全自动、无人值守、高度自定义,系统清爽流畅,让电脑瞬间起飞! | 零度解说

https://www.youtube.com/watch?v=tcVVSUu-wnQ   ------------------------------------- 🔔 全自动无人值守配置文件下载:https://www.lingdu80.com/13121.html U盘制作工具:https://www...
史上最简单的AI换脸,5个超实用的AI图片处理网站推荐!1秒就能上手操作! | 零度解说-零度会员

史上最简单的AI换脸,5个超实用的AI图片处理网站推荐!1秒就能上手操作! | 零度解说

https://youtu.be/kXPUHxxn1xQ ============== 5个超实用的AI网站地址合集:https://www.lingdu80.com/10710.html
admin的头像-零度会员admin
1.9W+1682
Avira Free Antivirus(小红伞)杀毒软件、激活入口-零度会员

Avira Free Antivirus(小红伞)杀毒软件、激活入口

Avira Free Antivirus,俗称“小红伞”,以轻量化设计和低资源占用著称,非常适合配置较低或追求流畅体验的电脑用户。其基于云技术的扫描引擎可迅速识别新型威胁,免费版还集成了基础的浏览器安...
admin的头像-零度会员admin
1.3W+1713
Anvi Folder Locker 文件夹加密软件! 免费好用,值得推荐-零度会员

Anvi Folder Locker 文件夹加密软件! 免费好用,值得推荐

1.Anvi Folder Locker:【点击下载】,【备用下载】 2.EFS 微软自带的文件夹加密 ⬇ 使用教程:https://www.lingdu80.com/2750.html
比特币突破历史最高点!附最新电脑挖矿教程,特朗普对加密货币有何深远影响? | 零度解说-零度会员

比特币突破历史最高点!附最新电脑挖矿教程,特朗普对加密货币有何深远影响? | 零度解说

https://youtu.be/OhGkTV3C_RM   1.比特币最新挖矿软件和钱包下载:https://www.lingdu80.com/16994.html 2.交易平台推荐 : https://www.huobi.com/
admin的头像-零度会员admin
1.2W+2269