【问题标题】:Excel VBA - Copy Workbook into a new Workbook with the macrosExcel VBA - 使用宏将工作簿复制到新工作簿中
【发布时间】:2017-07-24 07:45:29
【问题描述】:

所以我有一个工作表,它使用其他 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

【问题讨论】:

  • 我会复制原始 Excel 文件 (SaveCopyAs) 并删除所有不需要的工作表。

标签: vba excel


【解决方案1】:

我会复制原始文件并从中删除/隐藏工作表。
所有代码都作为保存的一部分被复制。

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

【讨论】:

    【解决方案2】:

    我设法找到了我的问题的答案。此代码运行良好,但是您需要通过工具 -> 参考添加“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)
    

    信用:Copy VBA code from a Sheet in one workbook to another?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多