使用vba复制图纸阵列

使用vba复制图纸阵列,vba,excel,Vba,Excel,我试图将一堆图纸从一个模板文件复制到一个新文件中,但这导致了引用原始模板的公式-因此我在网上看到我应该使用数组-但现在得到了一个下标超出范围的错误。我在最后一行出错了吗?我还尝试将ws作为字符串,但这也不起作用 Dim templateworkbookname As string templateworkbookname="test.xlsx" Dim ws() As Variant Dim j As Integer ReDim ws(Workbooks(t

我试图将一堆图纸从一个模板文件复制到一个新文件中,但这导致了引用原始模板的公式-因此我在网上看到我应该使用数组-但现在得到了一个下标超出范围的错误。我在最后一行出错了吗?我还尝试将ws作为字符串,但这也不起作用

Dim templateworkbookname As string
templateworkbookname="test.xlsx"
Dim ws() As Variant   
        Dim j As Integer
        ReDim ws(Workbooks(templateworkbookname).Worksheets.Count)
        For j = 1 To Workbooks(templateworkbookname).Worksheets.Count
                ws(j) = Workbooks(templateworkbookname).Worksheets(j).Name
        Next
        Set newbook = Workbooks.Add
        Workbooks(templateworkbookname).Worksheets(ws).Copy Before:=newbook.Sheets(1)

我对你的代码做了一些改动,因为这似乎是你想要完成的。如果您打开了一个新的空白工作簿,那么这将打开test.xlsx工作簿,然后复制工作表,然后关闭它,您的空白工作簿现在将包含test.xlsx中的3个工作表。请注意,我必须提供test.xlsx的整个路径,以便它能够找到它

Set currentworkbook = ActiveSheet
Dim templateworkbookname as String
templateworkbookname = "c:\test.xlsx"

Set wb = Workbooks.Open(templateworkbookname)

Dim ws() As Variant
Dim j As Integer
ReDim ws(wb.Worksheets.Count)
For j = 1 To wb.Worksheets.Count
    ws(j) = wb.Worksheets(j).Name
Next

For j = 1 To UBound(ws)
    wb.Worksheets(j).Copy Before:=currentworkbook
Next

wb.Close

这是你的全部密码吗?templateworkbookname似乎未定义,这将引发下标超出范围错误。不,这不是完整代码,但已定义编辑它nows/defined/**assigned**。这应该是一个字符串,而不是一个变体。@Mat的杯子变了,但工作表复制仍然不起作用。我不知道你为什么要这样做,如果你只是将所有工作表复制到一个新工作簿中,为什么不将原工作簿另存为一个新名称?嗨,谢谢,但我将所有这些都放在一个循环中多次执行,在某一点上,这将是addin的一部分。因此,我需要主宏来调用模板工作簿,然后添加另一个宏来保存它