将范围复制到新的电子表格中

我已经在这个线程中find了这个基本部分的解决scheme,并复制范围并粘贴到新的工作簿中

但是,当我试图给我的范围

wsI.Range("A1:Q1500").Copy 

我返回“运行时错误1004”。

我是否需要使用其他方法复制范围?

为了便于使用,这里是我链接后的完整的稍微编辑的代码

 Option Explicit Sub Sample() Dim wbI As Workbook, wbO As Workbook Dim wsI As Worksheet, wsO As Worksheet '~~> Source/Input Workbook Set wbI = ThisWorkbook '~~> Set the relevant sheet from where you want to copy Set wsI = wbI.Sheets("SICAV") '~~> Destination/Output Workbook Set wbO = Workbooks.Add With wbO '~~> Set the relevant sheet to where you want to paste Set wsO = wbO.Sheets("Sheet1") '~~>. Save the file .SaveAs Filename:="Pictay.xls", FileFormat:=56 '~~> Copy the range wsI.Range("A1:Q10").Copy '~~> Paste it in say Cell A1. Change as applicable wsO.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End With End Sub 

刚刚看到你的问题,并运行代码。 它工作正常。 你首先应该对引起错误的原因感兴趣。 一些研究帮助了这一点。

非常简单的答案是当您给工作簿一个定义的名称时,可能会出现这样的问题,然后多次复制工作表而不首先保存和/或closures工作簿。

例如: –

 For i = 1 To 10 wsI.Range("A1:Q1500").Copy wsO.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Next i 

Microsoftbuild议您在复制过程发生时定期保存并closures工作簿,如以下示例代码所示:

 For i = 1 To 10 wsI.Worksheets(i).Copy After:=wsO.Worksheets(i) 'Save, close, and reopen after every 100 iterations: If i Mod 100 = 0 Then wsO.Close SaveChanges:=True Set wsO = Nothing '' please change the path to your workbook below. Set wsO = Application.Workbooks.Open("c:\wsO.xls") End If Next