beim Schließen-Ereignis alle Makros löschen
07.02.2004 16:33:40
Thorsten
Ich möchte eine schreibgeschützte Datei unter einem anderen Namen speichern, der im "Speichern unter"-Dialog vorgegeben sein soll.
Beim Klicken auf SAVE funktioniert das so:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
Application.SendKeys "Preisliste-" & Left(Date, 2) & "-" & Mid(Date, 4, 2) & "-" & Right(Date, 2) & ".xls"
Application.EnableEvents = True
Dummy = True
AlleMakrosLoeschen
End Sub
Mit Hilfe des Makros "AlleMakrosLoeschen" werden zuerst alle Makros und Module gelöscht und erst dann öffnet sich der "Speichern unter"-Dialog. Der Dateiname lautet, wie gewünscht, "Preisliste-07-02-04.xls"
Der folgende Versuch beim Schließen-Ereignis......
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AlleMakrosLoeschen
End Sub
Hier das Makro "AlleMakrosLoeschen"
Sub AlleMakrosLoeschen()
Application.EnableEvents = False
With ActiveWorkbook.VBProject _
.VBComponents(ActiveWorkbook.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
With Application.VBE.ActiveVBProject
.VBComponents.Remove .VBComponents("frmcsvpreis")
.VBComponents.Remove .VBComponents("Modul1")
End With
If Dummy = False then
filesavename = Application.GetSaveAsFilename("Preisliste-" & Left(Date, 2) & "-" & Mid(Date, 4, 2) & "-" & Right(Date, 2) & ".xls")
If filesavename <> False Then
ActiveWorkbook.SaveAs (filesavename)
End If
End If
Dummy = False
Application.EnableEvents = True
End Sub
.....führt zu dem Erfolg, dass wie gewünscht, der "Speichern unter"-Dialog erscheint, auch der gewünschte Dateiname erscheint.
Wenn ich dann aber auf "Speichern" klicke, wird die Datei gespeichert UND es erscheint die Meldung:
"Sollen Ihre Änderungen in 'preisliste-07-02-04.xls' gespeichert werden?"
Klicke ich auf "JA", wird die Datei ohne Makros und Module gespeichert.
Klicke ich auf "NEIN", wird die Datei incl. dem Modul1 gespeichert.
Auch durch Unterdrücken der letzten Speicherfrage mit Hilfe von
ActiveWorkbook.Close SaveChanges:=True
Wird die Datei zusammen MIT dem Modul1 gespeichert.
Wie ist es möglich, dass auch beim Schließen-Ereignis die Datei OHNE Makros und Module gespeichert wird und das eben die letzte Frage, ob gespeichert werden soll, NICHT angezeigt wird?
Application.DisplayAlert = False
führt leider auch nicht zum Erfolg.
Vielen Dank für alle Anregungen, Denkanstöße und Tipps.
Ciao
Thorsten