我们在合并多个表格时候,特别是从ERP系统导出的数据,一般情况下量非常大,而且导出的格式一般默认是“.xls”后缀的表格,如果能使用vba进行合并,则会省事很多;
首先在需要合并表格的文件夹下,新建一个工作表,名字随意;
双击打开,点击开发工具,点击visual Basic,可以插入模块,也可以直接在需要合并的表单上将下面代码贴上,就可以了
Sub 合并多表() Dim location As String location = ThisWorkbook.Path & "\" Dim filename As String, writetoline As Long, myname filename = VBA.Dir(location & "*.xls*") myname = ActiveWorkbook.Name Do While filename <> myname Workbooks.Open filename:=location & filename, ReadOnly:=True writetoline = Application.WorksheetFunction.counta(ThisWorkbook.Sheets(1).Range("A:A")) + 1 ActiveWorkbook.Worksheets(1).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets(1).Range("A" & writetoline) if writetoline <> 1 Then ThisWorkbook.Sheets(1).Range("a" & writetoline).Entirerow.Delete End If ActiveWorkbook.Close savechanges:=False filename = Dir Loop ActiveWorkbook.Worksheets(1).Cells.ClearFormats End Sub
如果你合并的表格会将原表的格式带过来,比如从ERP系统导出表格,这样会占据表格大量的内存,这时就需要优化一下,将数据数值化;
在loop循环完毕之后加入下面这行代码,则可以清除了,
ActiveWorkbook.Worksheets(1).Cells.ClearFormats
如果还有其他属性需要清除,请参照下面这篇文章进行处理。