AW: before save
29.08.2008 12:06:00
Jogy
Das zeigt an, ob anschließend die Datei direkt gespeichert wird oder ob der "Speichern unter"-Dialog kommt - das hättest Du auch leicht über die VBA-Hilfe herausgefunden.
Außerdem funktioniert der Code oben nicht, denn wie soll die Datei unter einem anderen Namen gespeichert werden, wenn das Speichern unterbunden wird, solange sie den alten Namen hat?
Mal als Beispiel wie es funktioniert:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Const meineDatei = "c:\temp\test.xls"
Static daTei As String
On Error GoTo saveErr
If SaveAsUI = False Then
If daTei = "" Then
daTei = ThisWorkbook.Path & "\" & ThisWorkbook.Name
End If
If UCase(daTei) = UCase(meineDatei) Then
Cancel = True
End If
Else
Cancel = True
daTei = Application.GetSaveAsFilename
If daTei "" Then
ThisWorkbook.SaveAs daTei
End If
End If
saveErr:
daTei = ""
On Error GoTo 0
End Sub
Die Variable daTei ist statisch deklariert, da durch das ThisWorkbook.SaveAs die Prozedur nochmals aufgerufen wird, allerdings mit SaveAsUI = False. Das könnte man nun auf alle möglichen Arten abfangen, auf diese Art wird kann dann aber die eh schon vorhandene Dateinamenprüfung genutzt werden.
Die Fehlerbehandlung ist übrigens drin, damit die Variable daTei auch sicher zurückgesetzt wird.
Gruss, Jogy