Excel vba 实例(17) - 遍历多个工作簿并提取内容到总表

问题

上次介绍了一个vba实例:

Excel vba 实例(16) - 按指定字段分类批量提取内容

这个例子是把总表里面的数据根据单号批量提取相关内容后,分别保存成单独的文件。

有「拆」表格,自然就有「合并」表格,也就是上面实例(16)的逆操作,那么今天的例子就来说说如何用vba遍历多个工作簿并提取内容到总表。

举例如下:

现在有两张格式一样但内容不同的表,设为表一和表二,如下图

其中表二里面有两个sheet。

我们需要把这两个表中的三个sheet按照单号这个字段,统一提取内容到一个表格当中去,效果如下图:

思路

遍历文件夹里面所有的excel文件,如果你里面有多个sheet,每个sheet也都遍历一遍,然后单号以及其他内容所在的单元格依次复制到总表当中即可。

核心代码如下:

While X <= UBound(FileOpen) '遍历所有的excel文件
Set wb = Workbooks.Open(FileOpen(X)) '打开工作簿
        With ThisWorkbook.Sheets("sheet1") '操作当前文件下的sheet1表
            For Each sht In wb.Sheets '遍历目标工作簿里的工作表
                Do While sht.Range("A" & hang) <> "" '逐行提取内容
                    sht.Range("B2").Copy
                    .Range("A" & flag).PasteSpecial xlPasteValues
                    sht.Range("A" & hang & ":F" & hang).Copy .Range("B" & flag)
                    hang = hang + 1
                    flag = flag + 1
                Loop
                hang = 5
            Next
            wb.Close False '依次关闭目标工作簿
        End With 
X = X + 1
Wend
End Sub

效果演示

如果需要源文件的话,后台回复「遍历提取」即可。

需要说明一下:实例的代码只是针对根据上面表格的字段设计的,如果你的字段数量不同,可能会出现错误

据了解,做销售、零售、贸易等行业会用到销售单,订货单,采购单等表格,根据业务的情况会有上面的一些统计需求,这两个实例就是在帮多个小伙伴解决问题的时候做的,用vba(16)、(17)两个实例可以很方便快捷的实现效果。

如果还有其他需要定制化的功能,也可以联系我。

其他VBA实例,可以在公号里「精华整理」-「VBA实例」进行查看。


欢迎交流!

你可能感兴趣的:(Excel vba 实例(17) - 遍历多个工作簿并提取内容到总表)