合并多个有多 Sheet 的 Excel
例题描述
有文件夹里有多个Excel文件,每个文件有相同数量的sheet,且sheet名称都相同,同名sheet内的列数和列名都相同,如下图所示是workbook1.xlsx中的sheet:
现在想要把各文件中的数据合并到一个文件output.xlsx中,同名sheet中的数据合并到原名的sheet里,只保留第一个文件sheet中首行的列标题,其它文件中只需合并数据行,如下图所示是sheet1:
此题涉及列出文件夹中的文件、读取Excel文件中Sheet数据以及向Sheet中追加数据。
实现步骤
1、 编写脚本:
A |
B |
C |
D |
|
1 |
>dir="E:/excels/" |
|||
2 |
=directory(dir+"*.xlsx") |
|||
3 |
for A2 |
=file(dir+A3).xlsopen() |
||
4 |
if #A3==1 |
>C2=B3 |
next |
|
5 |
for C2 |
=B3.xlsimport@t(;B5.stname) |
||
6 |
=C2.xlsexport@a(C5;B5.stname) |
|||
7 |
=file(dir+"output.xlsx").xlswrite(C2) |
A1 定义文件所在的文件夹变量dir
A2 列出dir中所有的xlsx文件名称
A3 循环A2中的各文件
B3 打开当前A3中的文件为Excel对象
B4-D4 如果当前循环的是第一个文件,则把当前打开的Excel对象存到C2,继续处理下一个文件
B5 循环C2中的每个sheet
C5 从B3的Excel对象中读取当前sheet名称的数据,选项@t表示首行是列标题
C6 把C5中读出的数据追加到C2中的当前sheet中,选项@a表示是追加数据
A7 把合并后的C2保存到文件output.xlsx
2、 运行程序,结束后就可以在dir文件夹中看到合并后的output.xlsx文件。
问答搜集 https://stackoverflow.com/questions/63944588/vba-combine-multiple-workbookswith-mutiple-worksheets-into-one-workbook-with
【附件】 mergeexcel.zip
英文版
英文已更新