热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

excel不同文件表格批量加表头vba_VBA宏之批量合并同一文件夹下的Excel表格

此宏解决的痛点:多个表格字段相同,需要手工一个个打开之后复制合并到一个表上面的难题。宏使用方式:如下代码贴到VBE编辑器里后,

此宏解决的痛点:

多个表格字段相同,需要手工一个个打开之后复制合并到一个表上面的难题。

宏使用方式:

如下代码贴到VBE编辑器里后,不需任何修改即可直接使用。使用前确保要合并的Excel放置在同一个文件夹内,点击宏后,把存放Excel的文件夹的地址粘贴到弹出框即可。

示例:

1、待合并的EXCEL放在同一个文件夹内

2、使用宏,粘贴路径地址

3、大功告成

如下为代码

Sub 合并指定文件夹的工作簿()

Dim MP, MN, AW, Wbn, wn

Dim Wb As Workbook

Dim i, a, b, c, d, e

Application.ScreenUpdating = False

MP = InputBox("请输入需要合并的文件夹的地址,如D:\")

Workbooks.Add

'遍历地址下所有拓展名含xls的文件

MN = Dir(MP & "\" & "*.xls*")

'获取当前工作簿名称

Num = 0

e = 1

'一个一个的打开工作簿,只要打开了,就执行以下的命令

Do While MN <> ""

&#39;如果工作簿和汇总的表格名称不一致&#xff0c;则执行以下的命令

If MN <> AW Then

Set Wb &#61; Workbooks.Open(MP & "\" & MN)

&#39;计数现在汇总了几张表

a &#61; a &#43; 1

With Workbooks(AW).ActiveSheet

&#39;确定当前工作簿有多少个工作表&#xff0c;一个一个的打开

For i &#61; 1 To Sheets.Count

&#39;如果工作表的A1单元格不为空&#xff0c;则执行如下语句

If Sheets(i).Range("A1") <> "" Then

&#39;复制首行/表头

Wb.Sheets(i).Range("A1").Resize(1, Sheets(i).UsedRange.Columns.Count).Copy .Cells(1, 1)

&#39;确定待复制的工作表总共有多少列

d &#61; Wb.Sheets(i).UsedRange.Columns.Count

&#39;确定待复制的工作表剔除表头有多少行

c &#61; Wb.Sheets(i).UsedRange.Rows.Count - 1

&#39;增加一列填入工作簿&工作表名

wn &#61; Wb.Sheets(i).Name

.Cells(1, d &#43; 1) &#61; "表名"

.Cells(e &#43; 1, d &#43; 1).Resize(c, 1) &#61; MN & wn

e &#61; e &#43; c

&#39;复制表格信息到汇总表里

Wb.Sheets(i).Range("A2").Resize(c, d).Copy .Cells(.Range("A1048576").End(xlUp).Row &#43; 1, 1)

End If

Next

&#39;将刚打开的表格名和前面已汇总过的表格名组合起来

Wbn &#61; Wbn & Chr(13) & Wb.Name

&#39;关闭当前工作簿

Wb.Close False

End With

End If

MN &#61; Dir

&#39;循环

Loop

Range("A1").Select

Application.ScreenUpdating &#61; True

MsgBox "共合并了" & a & "个工作簿下全部工作表。明细如下&#xff1a;" & Chr(13) & Wbn, vbInformation, "提示"

End Sub



推荐阅读
author-avatar
杨琴琴qin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有