ich habe folgendes Problem. WEnn der User Excel mittels Schließen schließt, dann wird dies bei Änderung standardmäßig abgefangen und gefragt ob gespeichert werden soll. Da bei mir aber nur bestimmte Dateitypen zugelassen werden/sollen habe ich dieses "Abfangen" durch meinen Code ersetzt.
Problem dabei ist, dass nicht gespeichert wird! Wenn ich allerdings manuell mittels "Speichern" bzw. "Speichern Unter" speichere klappt es.
Hier einmal mein Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo ErrorHandler ' Enable error-handling routine.,
If ThisWorkbook.Saved = False Then
iClick = MsgBox("Sollen Ihre Änderungen gespeichert werden?", vbYesNoCancel + _
vbExclamation)
Select Case iClick
Case vbNo:
ThisWorkbook.Saved = True
Case vbYes:
ThisWorkbook.Save
ThisWorkbook.Saved = True
Case Else:
Cancel = True
End Select
End If
Exit Sub
ErrorHandler:
Call validFunctions.ErrorHandler(Err)
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo ErrorHandler ' Enable error-handling routine.,
'lässt nur speichern als pdf, xlsm oder xltm zu
Dim varFileName As Variant
Application.EnableEvents = False
Call verstecken
If SaveAsUI = True Then
varFileName = Application.GetSaveAsFilename( _
fileFilter:= _
"Excel Macro Enabled Workbook (*.xlsm),*.xlsm," & _
"Excel Macro Enabled Template (*.xltm),*.xltm," & _
"PDF Files (*.pdf), *.pdf", _
InitialFileName:="Bericht - (Ort) - " & Date & ".xlsm")
If varFileName False Then
Select Case LCase(Right(varFileName, 4))
Case ".pdf"
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=varFileName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Case Else
If Right(varFileName, 4) = "xlsm" Then
ActiveWorkbook.SaveAs Filename:=varFileName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
Else
ActiveWorkbook.SaveAs Filename:=varFileName, _
FileFormat:=xlOpenXMLTemplateMacroEnabled
End If
End Select
End If
Cancel = True
Else
Cancel = True
ActiveWorkbook.Save
End If
Call anzeigen
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Call validFunctions.ErrorHandler(Err)
Cancel = True
End Sub
Jemand ne Idee woran dies liegt?