Sicherungskopie II Frage an Kalr-Heinz
18.08.2019 18:38:22
Stephan
das Makro läuft super. Zwei Dinge, die mir noch aufgefallen sind:
Ich habe in meiner Datei beim öffnen einen Makro, der fragt, ob die Makros aktiviert sind. Diese Abfrage kommt auch in der Sicherungskopie, da es ja kein Modul ist. Kann man das umgehen? Wenn ich die Sicherung öffne, ist das ganze Tabellenblatt ausgewählt. Ich löse das immer, in dem ich eine Zelle A2 oder so anspreche. Vielleicht gibt es noch einen eleganteren Weg. Unten der tolle Makro.
Grüße
Stephan
Sub Erstelle_Sicherungskopie()
'Sicherungskopie anlegen
Dim WkB As Workbook, WSh As Worksheet, DateiPfad As String, VBComp As Object
'Datei unter anderem Namen kopieren
DateiPfad = ThisWorkbook.Path & "\" & "Dateiname" & Format(Now, "YY.MM.DD_HH-MM-SS") & "Backup. _
xlsm"
ThisWorkbook.SaveCopyAs Filename:=DateiPfad
Workbooks.Open Filename:=DateiPfad
Set WkB = ActiveWorkbook
'Zu löschende Blätter hier kommagetrennt auflisten
WegBlatt = "ISP,Mehrfach"
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
For Each WSh In WkB.Worksheets
If InStr("," & WegBlatt & ",", "," & WSh.Name & ",") > 0 Then
WSh.Delete 'Blatt löschen
Else
WSh.Cells.Copy
WSh.Cells.PasteSpecial Paste:=xlPasteValues 'Formeln entfernen
End If
Next WSh
'Jetzt die Module weg
For Each VBComp In WkB.VBProject.VBComponents
If VBComp.Type = 1 Then
With VBComp.CodeModule
.DeleteLines StartLine:=1, Count:=.CountOfLines 'code entfernen
End With
End If
Next VBComp
WkB.Save
WkB.Close
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
MsgBox "Bin fertig!", vbOKOnly Or vbInformation, "Sicherungskopie anlegen"
End Sub