将数据从许多工作簿复制到使用列标题的主数据

下面的代码是从一个工作簿复制数据到我的主(Source.xlsx)美妙的工作。 我可以修改这个代码来做许多工作簿相同的吗? 我需要使用源中的列标题将来自一个目录中的许多文件的数据附加到该表中。 我正在复制的文件总是有我正在寻找的标题,但在不同的列。 保存数据被复制的文件名以及添加的列(主文件位置>子文件夹>子文件夹2>要从中复制的文件)中保存的子文件夹和子文件夹2将是非常有用的。 你能帮我StackOverflow的大师?

Sub CopyByHeader() Dim CurrentWS As Worksheet Set CurrentWS = ActiveSheet Dim SourceWS As Worksheet Set SourceWS = Workbooks("vavc1.valor.carnival.com_2017-10-30.xls").Worksheets(1) Dim SourceHeaderRow As Integer: SourceHeaderRow = 1 Dim SourceCell As Range Dim TargetWS As Worksheet Set TargetWS = Workbooks("Source.xlsx").Worksheets(1) Dim TargetHeader As Range Set TargetHeader = TargetWS.Range("A1:K1") Dim RealLastRow As Long Dim SourceCol As Integer SourceWS.Activate For Each Cell In TargetHeader If Cell.Value <> "" Then Set SourceCell = Rows(SourceHeaderRow).Find _ (Cell.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not SourceCell Is Nothing Then SourceCol = SourceCell.Column RealLastRow = Columns(SourceCol).Find("*", LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row If RealLastRow > SourceHeaderRow Then Range(Cells(SourceHeaderRow + 1, SourceCol), Cells(RealLastRow, _ SourceCol)).Copy TargetWS.Cells(2, Cell.Column).PasteSpecial xlPasteValues End If End If End If Next CurrentWS.Activate End Sub 

所以你需要将你的代码封装在一个循环中。 对于folder.files中的每个工作簿,运行您的代码。

这篇文章将告诉你如何迭代一个文件夹中的工作簿:

使用VBA循环浏览文件夹中的文件?