无法将范围复制到VBA Office 2010中的其他工作簿

时间:2019-02-13 07:45:53

标签: excel copy range

我有一个奇怪的问题,我无法按照以下子程序运行:

Sub Copy_Workbook()
   Workbooks("book1").Sheets("Sheet1").Range("a1").Copy _ Workbooks("book2").Sheets(2).Range("a2")
End Sub

我两个都擅长xlsm,,并且都在同一实例中打开。

我确实收到了问题Out of range

如果有人对它为什么无法工作有任何想法,可以请指教,谢谢。

2 个答案:

答案 0 :(得分:2)

以下子项将起作用。

Sub Copy_Workbook()
   Workbooks("book1").Sheets("Sheet1").Range("a1").Copy Workbooks("book2").Sheets(2).Range("a2")
End Sub

您必须确认:

两个工作簿已打开,Book2至少有两(两)张工作表。检查工作表名称的所有拼写是否正确。

答案 1 :(得分:0)

如果您的工作簿尚未保存,则无需文件扩展名即可进行引用。

保存后,您必须包含扩展名。

您可以通过创建一个新的工作簿,然后转到VBA IDE中的“即时”窗格并键入?workbooks("Book1").name来确认。它将返回“ Book1”。

以.xlsm格式保存工作簿。返回到VBA IDE即时窗格,然后重新执行?workbooks("Book1").name。它将引发“下标超出范围”错误。

将代码更改为:

   Sub Copy_Workbook()
   Workbooks("book1.xlsm").Sheets("Sheet1").Range("a1").Copy _
   Workbooks("book2.xlsm").Sheets(2).Range("a2")
End Sub

会起作用!