Vba 将范围复制到新的电子表格中
我已经在这个线程中找到了解决这个问题的基本方法 然而,当我试图给它我的范围Vba 将范围复制到新的电子表格中,vba,excel,Vba,Excel,我已经在这个线程中找到了解决这个问题的基本方法 然而,当我试图给它我的范围 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/I
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
刚刚看到你的问题并运行了代码。它工作得很好。 您一定对最初导致错误的原因很感兴趣。一些人对此有所帮助 非常简单的答案是,如果给工作簿定义了一个名称,然后在不保存和/或关闭工作簿的情况下多次复制工作表,则可能会出现类似的问题 例如:-
For i = 1 To 10
wsI.Range("A1:Q1500").Copy
wsO.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Next i
Microsoft建议您在复制过程中定期保存和关闭工作簿,如以下示例代码所示:
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
你发布的代码很好用。你的代码中有什么“额外的”?代码对我来说也很好。嗨,代码在“A1:Q10”范围内工作,但在“A1:Q1500”范围内不工作。你能尝试保存到
xlsx
然后再试一次吗:)?保存为xlsx工作,谢谢!!是的,维蒂亚塔。非常感谢。FrasercT可能需要决定他是否愿意放弃编程方法而不是手动方法。