簡體   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