Vba 如何将多个电子表格复制到新工作簿?
我有一个生成多个电子表格的宏。我想将这些电子表格复制到一个新工作簿中,在运行时重命名这些表格,并用新名称保存工作簿 我尝试使用以下代码,但它生成运行时错误9,下标超出范围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
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
?它不在你的代码中。