【发布时间】:2021-12-01 18:26:52
【问题描述】:
我在一个文件夹中有多个工作簿。所有工作簿共享相同的格式,我希望从所有工作簿的第一个工作表上的相同范围复制并将其添加到新创建的工作簿的单个工作表中。
到目前为止的代码:
Sub OpenAllCompletedFilesDirectory()
Dim Folder As String, FileName As String
Folder = "pathway..."
FileName = Dir(Folder & "\*.xlsx")
Do
Dim currentWB As Workbook
Set currentWB = Workbooks.Open(Folder & "\" & FileName)
CopyDataToTotalsWorkbook currentWB
FileName = Dir
Loop Until FileName = ""
End Sub
Sub AddWorkbook()
Dim TotalsWorkbook As Workbook
Set TotalsWorkbook = Workbooks.Add
outWorkbook.Sheets("Sheet1").Name = "Totals"
outWorkbook.SaveAs FileName:="pathway..."
End Sub
Sub CopyDataToTotalsWorkbook(argWB As Workbook)
Dim wsDest As Worksheet
Dim lDestLastRow As Long
Dim TotalsBook As Workbook
Set TotalsBook = Workbooks.Open("pathway...")
Set wsDest = TotalsBook.Worksheets("Totals")
Application.DisplayAlerts = False
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row
argWB.Worksheets("Weekly Totals").Range("A2:M6").Copy
wsDest.Range("A" & lDestLastRow).PasteSpecial
Application.DisplayAlerts = True
TotalsBook.Save
End Sub
这行得通 - 在一定程度上。它确实复制了正确的范围并将结果放在“总计”工作簿的“总计”工作表上的另一个下方,但它会引发“下标超出范围”错误:
argWB.Worksheets("Weekly Totals").Range("A2:M6").Copy
粘贴最后一个工作簿中的数据后。 如何整理此代码以使其正常工作? 我想还有改进代码的空间。
【问题讨论】:
-
这意味着
argWB没有名为 Weekly Totals 的工作表。 -
TotalsWorkbook保存在哪里?与源文件相同的文件夹? -
@Tim Williams 是的,
TotalsWorkbook保存在与源文件相同的文件夹中。这会导致问题吗? -
@BigBen 如何防止该错误发生?
-
你需要检查文件名和
TotalsWorkbook的名字不一样,然后再尝试打开。