【问题标题】:Subscript out of range - copy worksheet to new workbook Excel下标超出范围 - 将工作表复制到新工作簿 Excel
【发布时间】:2017-03-22 22:31:42
【问题描述】:

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

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

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

【问题讨论】:

  • 在每个工作簿上检查您的Sheets name
  • “文档登记”表在哪个工作簿中?新的,还是您正在运行的现有的?我还会在Sheets("Document Register") 之前添加工作簿名称
  • @0m3r - 就像我在问题中所说,所有工作表名称都是正确的
  • 尝试完整的工作簿名称(包括文件扩展名)
  • 如果您引用的工作表不存在,您将收到下标超出范围错误。我知道您说工作表名称是正确的,但您是否确认 Sheet1 在 NewWorkbook 中?

标签: vba excel worksheet


【解决方案1】:

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

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 工作簿对象用于您所显示的内容之外的其他内容,可以很容易地将其设置为您在“复制到新工作簿”上创建的活动工作簿.

【讨论】:

  • 我也面临同样的问题。但是,我将工作表复制到现有工作簿。所以,这个解决方案对我不起作用。所有工作表都存在并正确命名。我要补充的一个观察是工作表被复制到目标工作簿中,并且代码不会向前移动,并且复制命令被重复调用而没有任何更改,然后引发错误。
猜你喜欢
  • 2016-10-06
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
相关资源
最近更新 更多