Hello Welchs101,
I wrote a macro to make a copy of the workbook with the sheets and code you want. The new workbook stays open after it is created. You can easily write a macro to save this where you want. Copy this code into into a new VBA module in your workbook.
' Written: May 16, 2012
' Author: Leith Ross
' Summary: Creates a copy of the workbook with only selected worksheets.
' VBA code from various modules and UserForms is copied as well.
Option Explicit
Sub CopyWorkbook()
Dim Code As String
Dim FormName As Variant
Dim FormNames As Variant
Dim i As Long
Dim NewVBProj As Object
Dim NewWkb As Workbook
Dim NewStdMod As Object
Dim Wks As Worksheet
Set NewWkb = Workbooks.Add
ThisWorkbook.Worksheets("Prompt").Visible = xlSheetHidden
ThisWorkbook.Worksheets("Prompt").Copy After:=NewWkb.Worksheets(NewWkb.Worksheets.count)
ThisWorkbook.Worksheets("Four_Column_Defn").Copy After:=NewWkb.Worksheets(NewWkb.Worksheets.count)
Application.DisplayAlerts = False
For i = 3 To 1 Step -1
NewWkb.Worksheets(i).Delete
Next i
Application.DisplayAlerts = True
Set NewVBProj = NewWkb.Application.VBE.ActiveVBProject
Set NewStdMod = NewVBProj.VBComponents.Add(ComponentType:=1)
With ThisWorkbook.VBProject
With .VBComponents("ThisWorkbook").CodeModule
Code = .Lines(1, .CountOfLines)
NewVBProj.VBComponents("ThisWorkbook").CodeModule.AddFromString Code
End With
With .VBComponents("Module2").CodeModule
Code = .Lines(1, .CountOfLines)
NewStdMod.CodeModule.AddFromString Code
End With
FormNames = Array("DateFormB", "PDM", "UserForm1")
For i = 0 To UBound(FormNames)
FormName = FormNames(i)
FormNames(i) = Environ("Temp") & "\" & FormName
.VBComponents(FormName).Export FormNames(i)
NewVBProj.VBComponents.Import FormNames(i)
Kill FormNames(i)
Kill FormNames(i) & ".frx"
Next i
End With
End Sub
Bookmarks