Hallo,
ich habe ein Excel-Workbook, dass ich per Button aktualisieren kann (das Book zieht Daten aus einer Access-DB und stellt sie per diverser Pivots dar).
Um zu verhindern, dass ich einen alten Stand versehentlich überschreibe, möchte ich das Workbook, sobald es geändert wurde, unter einem neuen Dateinamen speichern. Dazu setzt das Aktualisierungsmakro das Datum im Range „Datum“ auf heute.
Nun versuche ich, dass Speichern (z.B. per STRG+S) so zu automatisieren, dass der Dateiname automatisch geändert wird in
„Daten [Quartal] [Datum].xls“.
Das Quartal errechne ich an anderer Stelle (Range „quartal“).
Ich mache nun im Event „BeforeSave“ folgendes:
Private Sub Workbook\_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim datum As String, dateiname As String, quartal As String, pfad As String
On Error Resume Next
' nicht bei SAVE AS
If SaveAsUI = False Then
With ActiveWorkbook
datum = Format(.Sheets(1).Range("Datum").Value, "yyyy-mm-dd")
quartal = .Sheets(1).Range("quarter").Value
pfad = .Path
End With
dateiname = pfad & "\Daten " & quartal & " " & datum & ".xls"
Application.EnableEvents = False
ActiveWorkbook.SaveAs dateiname
Application.EnableEvents = True
End If
End Sub
Alles funktioniert bestens, die Datei wird umbenannt und gespeichert. Aber dann schmiert Excel (2003 [11.8142.8132] SP2) gnadenlos und reproduzierbar ab. Auch bei Kollegen ist das gleiche Verhalten zu beobachten.
Hat einer eine Idee, was Excel so verwirren kann?
Gibt es eine elegantere, robustere Art, das Thema zu lösen?
Danke für eure Hilfe.
Reiner