从选定工作簿的多个工作表中的特定区域获取数据

我必须制作一个macros,它允许我从一个表单中的A1-Ax,G1-Gx,另一个表单中的B1-Bx等等,在许多不同的工作簿中将数据收集到一个主Excel表单中。 我喜欢5-6 Excel文件,我必须收集数据,他们都包含像4-5工作表。

使用下面的代码,我可以在选定的Workbooks收集每个Worksheet中的所有数据。

但是,我必须收集的数据是根据每个Worksheet和/或Workbook而变化的特定Range

我的代码到目前为止是这样的:

 Function LastUsedCell(wks As Excel.Worksheet) As Excel.Range With wks If Application.WorksheetFunction.CountA(.Cells) <> 0 Then Set LastUsedCell = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False) End If End With End Function Function GetNextRowStart(wks As Excel.Worksheet) As Excel.Range Dim lastCell As Excel.Range Dim nextRow As Integer nextRow = 1 Set lastCell = LastUsedCell(wks) If Not lastCell Is Nothing Then nextRow = lastCell.Row + 1 Set GetNextRowStart = wks.Cells(nextRow, 1) End Function Sub Multi() Dim outputWorkbook As Excel.Workbook Dim outputWorksheet As Excel.Worksheet Dim filepath As Variant Set outputWorkbook = Workbooks.Open("C:\Users\z003k50s\Desktop\Test\Output.xlsx") Set outputWorksheet = outputWorkbook.Sheets("Sheet1") For Each filepath In Application.GetOpenFilename(FileFilter:="Excel Files (*.xl*), *.xl*", MultiSelect:=True) Dim wkbk As Excel.Workbook Dim wks As Excel.Worksheet Set wkbk = Workbooks.Open(filepath, , True) For Each wks In wkbk.Sheets Dim sourceRange As Excel.Range Dim outputRange As Excel.Range With wks Set sourceRange = .Range(.Cells(1, 1), LastUsedCell(wks)) End With Set outputRange = GetNextRowStart(outputWorksheet) sourceRange.Copy outputRange Next Next outputWorksheet.Columns.AutoFit End Sub 

我知道这听起来像很多工作,但只是用复制和粘贴进行硬编码。 这绝对不是最好的办法,但它会做的工作。