将工作表复制到同一个Excel工作簿会产生错误 - 下标超出范围。
sub copyWorkSheet()
Dim myPath As String
myPath = Application.ActiveWorkbook.FullName
Workbooks("Generator.xlsm").Activate
Sheets("Details 1").Select
Sheets("Details 1").Copy After:=Workbooks(myPath).Sheets("Details 2")
End Sub
答案 0 :(得分:2)
有许多行可能发生错误:
工作簿(" Generator.xlsm&#34)。激活
确保" Generator.xlsm"是开放的 - 激活制造商'发电机'活动和可用的工作簿,但不为您打开它。
您还必须确保'详细信息1'和'细节2'存在于两个工作簿中,如果不存在,也会产生错误。
示例更正的代码:
Sub copyWorkSheet()
Set otherWorkbook = Application.Workbooks.Open("Generator.xlsm")
otherWorkbook.Activate
otherWorkbook.Sheets("Details 1").Select
otherWorkbook.Sheets("Details 1").Copy After:=Application.ThisWorkbook.Sheets("Details 2")
End Sub
此代码段假设
答案 1 :(得分:0)
您的问题是由此行引起的:
myPath = Application.ActiveWorkbook.FullName
返回对象的名称,包括其在磁盘上的路径
要处理Workbooks集合中的项目,可以使用其Name属性,该属性不包含其路径。将上述行更改为:
myPath = Application.ActiveWorkbook.Name
如果ActiveWorkbook
包含名为Detail 2的工作表,将解决您的问题。
也就是说,您应该尽量避免使用ActiveWorkbook
,因为它可能不是您认为的工作簿。假设您要复制到保存Sub的工作簿中,引用ThisWorkbook.Name
会更安全。