复制工作簿减去一张包括图表的工作表

时间:2018-05-17 10:25:22

标签: excel vba excel-vba

我有一个包含多个工作表的工作簿,其中一个是仪表板,另一个包含基于其他工作表中包含的数据的图表的报表。

我还有模块1,其中包含所有工作簿的VBA。

是否可以在仪表板上设置一个按钮,将所有工作表复制到新工作簿,减去仪表板和模块1,并确保图表的源指向新创建的工作簿。

新工作簿不需要保存。 "第一册"很好。

3 个答案:

答案 0 :(得分:1)

根据提供的2个答案的灵感,我最终做的是将我的VBA移动到名为Macros的工作表,然后在仪表板上的按钮上使用此代码

Private Sub cmdExport_Click()

Dim filename    As String
Dim wb          As Workbook

filename = "C:\Users\xxx\Downloads\Book1.xls"

ThisWorkbook.SaveCopyAs filename

Set wb = Workbooks.Open(filename:=filename)

Application.DisplayAlerts = False

With wb
    .Sheets("Macros").Delete
    .Sheets("Dashboard").Delete
End With

Application.DisplayAlerts = True

End Sub

答案 1 :(得分:0)

这应该适用于你想要的东西。只需更改工作表名称即可。这是一种简单的方法,但它要求您列出每个工作表名称。有一种方法可以将所有纸张减去您想要的纸张。我会试着让它工作并稍后发布。

Sub Copy_Sheets_to_new_workbook()        
' This code will copy the sheets you want to a new workbook    
    Sheets(Array("Your Sheet Name 1", "Your Sheet Name 2", "Your Sheet Name 3")).Select    
    Sheets("Your Sheet Name 1").Activate    
    Sheets(Array("Your Sheet Name 1", "Your Sheet Name 2", "Your Sheet Name 3")).Copy    
End Sub

答案 2 :(得分:0)

这应该指向正确的方向。这只是循环遍历源工作簿中的每个工作表,并检查它是否在“不复制”列表中(您可以使用AND / OR语句添加更多),然后将工作表复制到目标工作簿的结束位置。 Excel通常负责所有引用

Sub copySheets()

    Dim ws As Worksheet
    Dim Source As Workbook
    Dim target As Workbook

    Set target = Workbooks("Test.xlsx")

    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "DashBoard" Then
            ws.Copy Before:=target.Sheets(target.Sheets.Count)
        End If
    Next

End Sub