我正在尝试使用主电子表格将多个工作表中的数据合并为一个。
但是,似乎我只能为连续列设置一个 sourceRange,并且我想复制不同的列(例如 A、C 和 K)。
有人可以帮助命令如何执行此操作吗?另外,我希望复制整列,只要它有数据(而不是指定单元格范围),有人知道如何做到这一点吗?
这是我正在使用的代码(在线找到):
Sub MergeAllDeliverables()
Dim SummarySheet As Worksheet
Dim FolderPath As String
Dim NRow As Long
Dim Filename As String
Dim WorkBk As Workbook
Dim SourceRange As Range
Dim DestRange As Range
' Create a new workbook and set a variable to the first sheet.
Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
' Modify this folder path to point to the files you want to use.
FolderPath = "C:\Users\..."
' NRow keeps track of where to insert new rows in the destination workbook.
NRow = 1
' Call Dir the first time, pointing it to all Excel files in the folder path.
Filename = Dir(FolderPath & "*.xl*")
' Loop until Dir returns an empty string.
Do While Filename <> ""
' Open a workbook in the folder
Set WorkBk = Workbooks.Open(FolderPath & Filename)
' Set the cell in column A to be the file name.
SummarySheet.Range("A" & NRow).Value = Filename
' Set the source range to be what you like.
' Modify this range for your workbooks.
' It can span multiple rows.
Set SourceRange = WorkBk.Worksheets(1).Range("a:1")
' Set the destination range to start at column B and
' be the same size as the source range.
Set DestRange = SummarySheet.Range("B" & NRow)
Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
SourceRange.Columns.Count)
' Copy over the values from the source to the destination.
DestRange.Value = SourceRange.Value
' Increase NRow so that we know where to copy data next.
NRow = NRow + DestRange.Rows.Count
' Close the source workbook without saving changes.
WorkBk.Close savechanges:=False
' Use Dir to get the next file name.
Filename = Dir()
Loop
' Call AutoFit on the destination sheet so that all
' data is readable.
SummarySheet.Columns.AutoFit
End Sub