下标超出范围 - 将工作表复制到新工作簿Excel

时间:2017-03-22 22:31:42

标签: excel vba excel-vba worksheet

我正在尝试非常简单的过程,我将一个工作表复制到新工作簿,如下面的代码所示:

Private Sub btn_Documents_Click()
    Dim LastRow As Integer
    Dim printrange As Range
    Dim NewWorkbook As Workbook

    Set NewWorkbook = Workbooks.Add
    With NewWorkbook

    .Title = "Document Register"
    .SaveAs Filename:="some file path" & " Program documents status.xlsx"
End With
Workbooks("COFFIE Project Tracker V2.0.0.0").worksheets("Document Register").Copy Before:=NewWorkbook.Sheets("Sheet1")

Unload Me
frm_Control.Show

End Sub

这个确切的代码以前对我有用,但是,这次它在代码的副本行上抛出了超出范围错误的下标。我已经仔细检查了文件名,我正在复制的工作表的名称,这一切都是正确的,所以我现在不知道为什么它会抛出这个错误。

1 个答案:

答案 0 :(得分:3)

为什么不直接将工作表复制到新工作簿(不手动创建目标工作簿)?

Workbooks("COFFIE Project Tracker V2.0.0.0").worksheets("Document Register").Copy
with activeworkbook
     .Title = "Document Register"
     .SaveAs Filename:="some file path" & " Program documents statusx", FileFormat:=xlOpenXMLWorkbook
end with

请注意,我使用.SaveAs的FileFormat参数,并从文件名中删除文件扩展名。

如果您需要将NewWorkbook工作簿对象用于除您显示的内容以外的其他内容,则可以轻松地将其设置为您在复制到新工作簿上创建的活动工作簿。 -飞。