2017-07-24 187 views
0

因此,我有一个工作表,它使用2个其他工作表上的信息生成图表类型的事物。在它上面,我有一个提取按钮,应该将整个工作簿复制到一个新的工作簿中,同时制作将数据从用户不可见的工作表。我的问题是,图表工作表具有需要运行宏的其他功能,例如隐藏一些按钮的按钮等。问题是我找不到实际上是否可以通过宏从工作簿复制到新复制的工作簿?任何人都有这个答案,如果是的话,你会如何做到这一点?下面是代码我现在有哪份工作簿到新工作簿:Excel VBA - 将工作簿复制到带有宏的新工作簿中

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 
+0

我会复制原始Excel文件('SaveCopyAs')并删除任何不需要的工作表。 –

回答

0

我设法找到一个答案,我的问题..此代码工作正常,但是你需要添加“Microsoft Visual Basic的应用程序扩展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?

0

我会拿原始文件的副本,并删除其中的/隐藏表。
所有代码都作为保存的一部分进行复制。

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 
相关问题