合并多个有多 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   B3Excel对象中读取当前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