Hallo Mick,
wenn ich deine Wünsch richtig verstehe dann:
Das angelegte Familienblatt wird in der Hauptmappe nicht mehr gelöscht, Button und VBA Code der Tabelle werden gelöscht.
Extras -> Makro -> Sicherheit
Einen Code über Sicherheit kann man nicht einfügen.
Du könntest aber eine digitale Signatur erzeugen um Makros vertrauenswürdig einzustufen.
Digitale Signatur
Pfad anpassen.
Workbooks Name Familenblatt anpassen.
With Workbooks("Familienblatt_Test_001.xls").VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
Option Explicit
Sub Abspeichern()
Dim Name As String
Application.ScreenUpdating = False 'Tabellenwechsel unterbinden
Application.DisplayAlerts = False 'Fehlermeldungen werden unterdrückt
ActiveWindow.SelectedSheets.Copy 'Neue Arbeitsmappe wird erstellt
Dim strDateiname As String
strDateiname = Range("C1").Value & " " & Range("E1").Value & ".xls" 'Arbeitsmappe Name = Zelle C1& E1 + xls
ActiveSheet.Shapes("CommandButton1").Cut 'Button werden gelöscht
ActiveSheet.Shapes("CommandButton2").Cut 'Button werden gelöscht
ActiveSheet.Shapes("CommandButton3").Cut 'Button werden gelöscht
Call VBA_Code_entfernen
ActiveWorkbook.SaveAs ("C:\Dokumente und Einstellungen\Admin\Desktop\Muster\" & strDateiname) 'Pfad zum Speichern
ActiveWindow.Close 'Arteitsmappe wird geschlossen
ActiveSheet.Shapes("CommandButton1").Cut 'Button werden gelöscht
ActiveSheet.Shapes("CommandButton2").Cut 'Button werden gelöscht
ActiveSheet.Shapes("CommandButton3").Cut 'Button werden gelöscht
Call Alle_VBA_Code_in_Tabellenblättern_löschen
Application.DisplayAlerts = True 'Fehlermeldungen werden wieder aktiviert
End Sub
Sub Alle_VBA_Code_in_Tabellenblättern_löschen()
With Workbooks("Familienblatt_Test_001.xls").VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
End Sub
Sub VBA_Code_entfernen()
Dim Ding As Object
Dim Zeile As Long
Dim Antwort As Integer
For Each Ding In ActiveWorkbook.VBProject.VBComponents
'Type 100 = DieseArbeitsmappe und alle Tabellen
If Ding.Type = 100 Then
With ActiveWorkbook.VBProject.VBComponents(Ding.Name).CodeModule
For Zeile = 1 To .CountOfLines
.DeleteLines 1
Next Zeile
End With
'Type 1 = Modul, Type 2 = Klassenmodul, Type 3 = UserForm
Else
ActiveWorkbook.VBProject.VBComponents.Remove Ding
End If
Next
End Sub
Sub MappenInhaltZusammenstellen()
Range("B9:B100") = ""
Dim Tabelle As Worksheet
Dim i As Integer
ActiveSheet.Name = "Startseite"
i = 10
For Each Tabelle In ActiveWorkbook.Worksheets
Sheets("Startseite").Cells(i, 2).Value = Tabelle.Name
Tabelle.Hyperlinks.Add Anchor:=Cells(i, 2), _
Address:="", SubAddress:=Tabelle.Name & _
"!A1", ScreenTip:="Hyperlink klicken", _
TextToDisplay:=Tabelle.Name
i = i + 1
Next Tabelle ' Startseite, Vorlage löschen
Cells.Find(What:="Startseite", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Replace What:="Startseite", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False
Cells.Find(What:="Vorlage", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Replace What:="Vorlage", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False
'Hyperlinks sortieren
Range("B9:B100").Sort Key1:=Range("B9"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Gruß
fedjo