extjs3.4表头合并行_VBA宏之批量合并同一文件夹下的Excel表格

此宏解决的痛点:

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

宏使用方式:

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

示例:

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

6511a1489c08a142c97042b291c0deda.png

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

585cef613413d73d6e611ea3fcb027dd.png

3、大功告成

c97be2842da4bb721808c2c8e6af872a.png

如下为代码

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*")

'获取当前工作簿名称

AW = ActiveWorkbook.Name

Num = 0

e = 1

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

Do While MN <> ""

'如果工作簿和汇总的表格名称不一致,则执行以下的命令

If MN <> AW Then

Set Wb = Workbooks.Open(MP & "" & MN)

'计数现在汇总了几张表

a = a + 1

With Workbooks(AW).ActiveSheet

'确定当前工作簿有多少个工作表,一个一个的打开

For i = 1 To Sheets.Count

'如果工作表的A1单元格不为空,则执行如下语句

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

'复制首行/表头

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

'确定待复制的工作表总共有多少列

d = Wb.Sheets(i).UsedRange.Columns.Count

'确定待复制的工作表剔除表头有多少行

c = Wb.Sheets(i).UsedRange.Rows.Count - 1

'增加一列填入工作簿&工作表名

wn = Wb.Sheets(i).Name

.Cells(1, d + 1) = "表名"

.Cells(e + 1, d + 1).Resize(c, 1) = MN & wn

e = e + c

'复制表格信息到汇总表里

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

End If

Next

'将刚打开的表格名和前面已汇总过的表格名组合起来

Wbn = Wbn & Chr(13) & Wb.Name

'关闭当前工作簿

Wb.Close False

End With

End If

MN = Dir

'循环

Loop

Range("A1").Select

Application.ScreenUpdating = True

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

End Sub

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值