Vba 如何将多个电子表格复制到新工作簿?

Vba 如何将多个电子表格复制到新工作簿?,vba,excel,Vba,Excel,我有一个生成多个电子表格的宏。我想将这些电子表格复制到一个新工作簿中,在运行时重命名这些表格,并用新名称保存工作簿 我尝试使用以下代码,但它生成运行时错误9,下标超出范围 Dim z As Variant Dim wb As Workbook Worksheets("T_Summary").Activate Set wb = Workbooks.Add z = Format(DateTime.Now, "dd-MM-YYYY hhmm") wb.SaveAs

我有一个生成多个电子表格的宏。我想将这些电子表格复制到一个新工作簿中,在运行时重命名这些表格,并用新名称保存工作簿

我尝试使用以下代码,但它生成运行时错误9,下标超出范围

Dim z As Variant
Dim wb As Workbook

    Worksheets("T_Summary").Activate

    Set wb = Workbooks.Add

    z = Format(DateTime.Now, "dd-MM-YYYY hhmm")
    wb.SaveAs "C\...\desktop\Transactions Summary " & z & ".xlsx"

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet 1").Range("A1:BO" & h).Value _
        = Workbooks("Auto Recon 2.xlsx").Worksheets("TSummary").Range("A1:BO" & h).Value

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet1").Name = "TSummary"

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet 2").Range("A1:BO" & h).Value _
        = Workbooks("Auto Recon 2.xlsx").Worksheets("Reject").Range("A1:BO" & h).Value
    Workbooks("Transactions Summary").Worksheets("Sheet1").Name = "Reject"

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet 3").Range("A1:BO" & h).Value _
        = Workbooks("Auto Recon 2.xlsx").Worksheets("U codes").Range("A1:BO" & h).Value
    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet1").Name = "U codes"

    x = 2
    k = Sheets.Count

    While x <= k
        Sheets(x).Delete
        k = Sheets.Count
    Wend

    Workbooks("Transactions Summary " & z & ".xlsx").Close savechanges:=True

Worksheets("Launch Screen").Activate
Dim z作为变量
将wb设置为工作簿
工作表(“T_摘要”)。激活
设置wb=工作簿。添加
z=格式(DateTime.Now,“dd-MM-yyy-hhmm”)
wb.SaveAs“C\…\desktop\Transactions Summary”&z&“.xlsx”
工作簿(“交易摘要”&z&“.xlsx”)。工作表(“表1”)。范围(“A1:BO”&h)。值_
=工作簿(“自动识别2.xlsx”)。工作表(“TSummary”)。范围(“A1:BO”&h)。值
工作手册(“交易摘要”&z&“.xlsx”)。工作表(“表1”)。Name=“TSummary”
工作簿(“交易摘要”&z&“.xlsx”)。工作表(“表2”)。范围(“A1:BO”&h)。值_
=工作簿(“自动识别2.xlsx”)。工作表(“拒绝”)。范围(“A1:BO”&h)。值
工作簿(“交易摘要”)。工作表(“表1”)。Name=“拒绝”
工作簿(“交易摘要”&z&“.xlsx”)。工作表(“第3页”)。范围(“A1:BO”&h)。值_
=工作簿(“自动识别2.xlsx”)。工作表(“U代码”)。范围(“A1:BO”&h)。值
工作簿(“交易摘要”&z&“.xlsx”)。工作表(“表1”)。Name=“U代码”
x=2
k=床单数

当x自己测试代码后,这就是问题所在:

当您执行
Set wb=Workbooks.Add
Excel使用名为
Sheet1
工作表创建一个新的
工作簿
,而不是
Sheet1

因此,以下代码将修复该问题:

Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet1").Range("A1:BO" & h).Value
您还需要执行以下操作:

Application.SheetsInNewWorkbook = 3
Set wb = Workbooks.Add

工作簿。添加
创建一个带有1张
工作表的
工作簿
(在我的Excel上),以确保获得所需工作表的正确数量,您必须将
3
设置为所需数量。(我假设
3
基于您的代码)

您的代码中是否确实存在此错误?@DragonSamu此错误发生在第一个工作簿上(…是否有特定原因导致您只复制
范围A1:BO
?如果您只想复制
工作表
,我建议使用
工作表(“此处的名称”).Copy
@DragonSamu这是一个速度问题。其中一些文件有超过1m行和200多列。因此,我只需要一定数量的列和行。如果我复制整个文件,它将复制我不需要的数据,并将使宏崩溃,那么这样做是合乎逻辑的。我仍在检查,但第一个“问题”我明白了,你在哪里赋予
h
?它不在你的代码中。