首页 > 解决方案 > 无法将工作表复制到另一个工作簿

问题描述

我有一个看起来很小的问题,但不知道如何解决。所以,每周我都必须制作一堆数据透视表来总结我得到的原始数据。我想,如果我将所有表都创建到一个布局文件中,然后将它们复制到新文件中,然后更改源,那会容易得多。我写了以下代码:

Sub something()

Workbooks.Open Filename:="C:\\\\Layout.xlsx"
With Workbooks("Layout.xlsx")
    .Sheets("Pivot").Copy Before:=ActiveWorkbook.Sheets("Main List")
    .Close savechanges:=False
End With

End Sub

这段代码工作得很好。当我尝试将代码粘贴到我的个人工作簿中,然后直接通过 VBA 运行,而不是每次都复制和粘贴时,问题就出现了。

我可以做的是,将代码从“Activeworkbook”更改为我的新工作簿的名称,但它的名称每周都会更改,因为它是基于日期的。我已经尝试将新工作簿的名称声明为字符串并通过它调用它,但这也不起作用。

有任何想法吗?

标签: excelvba

解决方案


我会使用工作簿对象来保持两个文件清晰:

Sub something()

    Dim wb_from As Workbook, wb_to As Workbook
    Set wb_to = ActiveWorkbook
    Workbooks.Open Filename:="C:\\\\Layout.xlsx"
    Set wb_from = Workbooks("Layout.xlsx")
    wb_from.Sheets("Pivot").Copy Before:=wb_to.Sheets("Main List")
    wb_from.Close SaveChanges:=False
end sub

推荐阅读