复制一系列工作表vba

时间:2015-04-21 21:24:34

标签: excel vba excel-vba

我试图将一堆工作表从模板文件复制到新文件,但这导致公式引用了原始模板 - 所以我在网上看到我应该使用数组 - 但现在得到一个& #34;下标超出范围"错误。我做错了什么 - 它在最后一行出错?我也尝试使用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)

1 个答案:

答案 0 :(得分:0)

我改变了你的代码,因为这看起来像你想要完成的。如果您打开一个新的空白工作簿,则会打开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