使用VBA代码合并当前文件夹下所有表格

我们在合并多个表格时候,特别是从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

如果还有其他属性需要清除,请参照下面这篇文章进行处理。

使用VBA清除工作表的公式、内容及格式

转载请注明出处;
本文地址:https://rijifang.com/index.php/post/16061.html
相关热文

发表评论: