您的位置首页百科知识

基于vb宏合并多个同表头Excel文件到一sheet中

基于vb宏合并多个同表头Excel文件到一sheet中

的有关信息介绍如下:

基于vb宏合并多个同表头Excel文件到一sheet中

有时候我们需要将一堆的Excel文件合并到一个文件夹里面分析,如果文件比较少的话还可以手动操作,文件特别多的话,手动操作就不现实了。本文介绍一种快速合并多个Excel文件的方法——使用宏合并多个Excel文件。

3Excel实用宏系列02:合并多个Excel文件

按住Alt + F11打开VBE编辑窗口,依次点击“插入->模块”插入一个新模块。

在新模块中复制如下代码:

Option Explicit

Sub HzWb()

Dim bt As Range, r As Long, c As Long

r = 1 '1 是表头的行数

c = 2 '2是表头的列数

Dim wt As Worksheet

Set wt = ThisWorkbook.Worksheets(1) '将汇总表赋给变量wt

wt.Rows(r + 1 & ":1048576").ClearContents ' 清除汇总表中原表数据,只保留表头

Application.ScreenUpdating = False

Dim FileName As String, sht As Worksheet, wb As Workbook

Dim Erow As Long, fn As String, arr As Variant

FileName = Dir(ThisWorkbook.Path & "\*.xlsx")

Do While FileName <> ""

If FileName <> ThisWorkbook.Name Then ' 判断文件是否是汇总数据的工作簿

Erow = wt.Range("A1").CurrentRegion.Rows.Count + 1 ' 取得汇总表中第一条空行行号

fn = ThisWorkbook.Path & "\" & FileName '将第1个要汇总的工作簿名称赋给变量fn

Set wb = GetObject(fn) ' 将变量fn 代表的工作簿对象赋给变量wb

Set sht = wb.Worksheets(1) ' 将要汇总的工作表赋给变量sht

' 将工作表中要汇总的记录保存在数组arr里

arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(1048576, "B").End(xlUp).Offset(0,c))

' 将数组arr 中的数据写入工作表

wt.Cells(Erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

wb.Close False

End If

FileName = Dir ' 用Dir 函数取得其他文件名,并赋给变量

Loop

Application.ScreenUpdating = True

End Sub

根据备注修改使代码适用具体工作任务,将以上代码按照需求更改后运行即可合并多个Excel文件。(再次强调代码中的标点符号必须是英文标点符号。)

修改完代码后按F5键执行或者回到工作表界面按Alt +F8执行均可。具体的打开VBE界面以及执行方法在这里就不附上图片了,具体参考引用经验。