[转载]VBA宏实现多个excel文件合并到一个文件
2017-08-13 15:32阅读:
假设我们有70个文件,要将这70个文件合并到一个文件里,并且把所有表合并到一个excle文件,怎么办呢?。
首先我们来合并文件,也叫合并工作薄。我们来新建一个execl文件,命名为“合并.xls”并打开,在sheet1
处右键,选择“查看代码”选项,打开我们的 vb编辑器,输入以下代码:
Sub 工作薄合并()
Dim
FileOpen
Dim X As
Integer
Application.ScreenUpdating = False
FileOpen =
Application.GetOpenFilename(FileFilter:='Microsoft
Excel文件(*.xls),*.xls', MultiSelect:=True, Title:='合并工作薄')
X = 1
While X
<= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move
After:=ThisWorkbook.Sheets(ThisW
orkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
errhadler:
MsgBox
Err.Description
End Sub
vba代码不用保存,直接关闭,我们再到工作表里,运行刚才的VBA,也叫宏。出现一个选择窗口,在这个窗口选择要合并的文件,多选哟。
好了,确定后程序自动合并,直到停止。
合并完成后,我们看一下,所有工作表都在一个文件里了。保存。
接下来我们把所有工作表合并到一个表里,还是用VB编辑器。点击sheet2,在sheet2右键,查看代码,输入以下代码 :
Sub 合并工作表()
[A2:I65536].ClearContents
For sht = 2
To Sheets.Count
With Sheets(sht)
h1 =
[a65536].End(3).Row
h2 =
.[a65536].End(3).Row
.Range('a2:i' & h2).Copy Range('a' & h1 + 1)
End With
Next
sht
End Sub
这个代码的意思是将文件内的所有工作表从a2开始合并到i列。
一般我们都有一行表头,如果是2行表头,那么我们将所有A2改为A3,列数修改i,运行后我们得到所有数据。