mit folgendem Code möchte ich ein Tabellenblatt speichern und den kompletten VBA-Code löschen. ActiveSheet.copy kann ich nicht nehmen, da Sonderformatierungen in der Mappe sind.
Sub Loeschen()
Application.Dialogs(xlDialogSaveAs).Show
'Blätter löschen
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Name "Newsletter" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
'Makros löschen
Dim objVBComponents As Object
With ActiveWorkbook.VBProject
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1, 2, 3 'Module, Klasssenmodule, Userforms
'diesen Code nicht löschen
If objVBComponents.Name "Löschen" Then
.VBComponents.Remove .VBComponents(objVBComponents.Name)
End If
Case 100 'Workbook, Sheets
With objVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
ActiveWorkbook.Save
End Sub
Scheinbar wird der letzte Save-Befehl ausgeführt bevor alle Module etc. gelöscht sind.
Bevor ich die Datei schließe, sind alle Module etc. gelöscht. Beim Schließen werde ich gefragt, ob ich Speichern möchte (habe ich doch aber eigentlich gerade schon?) und wenn ich nicht speichere, dann sind beim Öffnen wieder alle Module etc. da. Die Arbeitsblätter sind und bleiben gelöscht.
Kennt ihr dieses Problem und könnt mir bei der Lösung helfen?
Danke und Gruß
Specke