繁体   English   中英

Excel VBA-将工作簿复制到带有宏的新工作簿中

[英]Excel VBA - Copy Workbook into a new Workbook with the macros

所以我有一个工作表,它使用其他2个工作表上的信息生成事物的图表类型。 在它上面,我有一个提取按钮,该按钮应将整个工作簿复制到一个新的工作簿中,同时使用户可以看到不可见的数据。 我的问题是,图表工作表还具有需要运行宏的其他功能,例如,隐藏了其中某些功能的按钮等。问题是我找不到通过宏从工作簿复制到新复制的工作簿中是否真正可行? 有人对此有答案吗?如果是,您将如何做? 这是我当前拥有的将工作簿复制到新工作簿中的代码:

Sub EWbtn()

Dim OriginalWB As Workbook, NewCRCWB As Workbook

Set OriginalWB = ThisWorkbook
Set NewCRCWB = Workbooks.Add


OriginalWB.Sheets("Generator").Copy Before:=NewCRCWB.Sheets("Sheet1")
OriginalWB.Sheets("Module Part Number Tracker").Copy Before:=NewCRCWB.Sheets("Generator")
OriginalWB.Sheets("CRC").Copy Before:=NewCRCWB.Sheets("Module Part Number Tracker")

Application.DisplayAlerts = False
NewCRCWB.Worksheets("Generator").Visible = False
NewCRCWB.Worksheets("Module Part Number Tracker").Visible = False
NewCRCWB.Worksheets("Sheet1").Delete
Application.DisplayAlerts = True

End Sub

我设法找到问题的答案。此代码可以正常工作,但是您需要通过工具->引用添加“ Microsoft Visual Basic for Applications Extensibility 5.x”作为引用。 这是代码:

Dim src As CodeModule, dest As CodeModule

Set src = ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule
Set dest = Workbooks("Book3").VBProject.VBComponents("ThisWorkbook") _
.CodeModule

dest.DeleteLines 1, dest.CountOfLines
dest.AddFromString src.Lines(1, src.CountOfLines)

信誉: 将VBA代码从一个工作簿中的工作表复制到另一个工作簿中?

我要复制原始文件,然后从中删除/隐藏工作表。
所有代码都将作为保存的一部分进行复制。

Sub Test()

    Dim wrkBk As Workbook
    Dim sCopyFileName As String
    Dim wrkSht As Worksheet

    sCopyFileName = "C:\MyFolderPaths\Book2.xlsm"

    'Create copy of original file and open it.
    ThisWorkbook.SaveCopyAs (sCopyFileName)
    Set wrkBk = Workbooks.Open(sCopyFileName)

    'wrkbk.Worksheets does not include Chart sheets.
    'wrkbk.Sheets would take into account all the types of sheet available.
    For Each wrkSht In wrkBk.Worksheets
        Select Case wrkSht.Name
            Case "Generator", "Module Part Number Tracker"
                wrkSht.Visible = xlSheetVeryHidden
            Case "CRC"
                'Do nothing, this sheet is left visible.
            Case Else
                Application.DisplayAlerts = False
                wrkSht.Delete
                Application.DisplayAlerts = True
        End Select
    Next wrkSht

    wrkBk.Close SaveChanges:=True

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM