Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speicherschleife nach Schließen über Fensterkreuz

Speicherschleife nach Schließen über Fensterkreuz
22.08.2016 13:51:13
Dirk
Hallo Profis,
brauche mal eure Hilfe.
Ich habe folgenden Code in "DieserArbeitsmappe".
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not [Charge] = "" Then
Cancel = True
Call Speichern_und_Export
End If
End Sub

Hinter "Call Speichern_und_Export" befindet sich ein Code, der zum einen eine Excel-Datei mit bestimmtem Namen speichert und im Anschluss eine pdf-Datei erzeugt und diese auch in einem Extraverzeichnis ablegt.
Gehe ich den normalen Speicherweg, also über die Menüleiste, den Speicherbutton oder auch Tastenkombination, dann ist alles i.O. Schließe ich aber über das Fensterkreuz, dann kommt die Speicherabfrage zweimal.
Wie kann ich die zweite Abfrage verhindern ohne das Schließen über Fensterkreuz zu deaktivieren?
Danke im Voraus.
Gruß
Dirk

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speicherschleife nach Schließen über Fensterkreuz
23.08.2016 13:40:49
ChrisL
Hi Dirk
Das Problem hatte ich auch schon und wie folgt gelöst:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then
Select Case MsgBox("Sollen Ihre Änderungen in '" & ThisWorkbook.Name & "' gespeichert  _
werden?", vbYesNoCancel + vbExclamation)
Case vbYes
On Error Resume Next
Application.EnableEvents = False
If LCase(Right(ThisWorkbook.Name, 4))  "xlsm" Then
Application.Dialogs(xlDialogSaveAs).Show ("blabla"), xlOpenXMLWorkbookMacroEnabled
Else
ThisWorkbook.Save
End If
Application.EnableEvents = True
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub

cu
Chris
Anzeige
AW: Speicherschleife nach Schließen über Fensterkreuz
23.08.2016 13:59:48
Dirk
Hallo Chris,
zuerst einmal Danke für die Hilfe. Über den Befehl "Call Speichern_und_Export" wird eine Abfrage zum speichern bereits ausgeführt. Vor dem unmittelbaren Schließen der Datei kommt die Abfrage jedoch noch einmal. Welcher Teil deines Codes verhindert diese 2. Abfrage?
Danke.
Gruß
Dirk
AW: Speicherschleife nach Schließen über Fensterkreuz
23.08.2016 14:06:01
ChrisL
Hi Dirk
Deine Rückfrage hat sich mit meiner zweiten Antwort überschnitten.
EnableEvents verhindert das Ausführen vom Before_Close Ereignis.
Schliessen über Fensterkreuz öffnet die Speicherroutine einmal und der Speichervorgang an sich ein zweites mal. Wenn du also Before_Close abfängst und deine eigene Speicherroutine verwendest, dann kannst du mit EnableEvents die zweite Ausführung verhindern.
cu
Chris
Anzeige
AW: Speicherschleife nach Schließen über Fensterkreuz
23.08.2016 14:01:42
ChrisL
Hi Dirk
Noch kurz die Erklärung.
Der Code imitiert die ganz normale Speicherroutine. Dies gibt dir Gelegenheit, die entscheidenden Teil durch deinen eigenen Code zu ersetzen und wegen EnabelEvents wird das Before_Save Ereignis nicht noch einmal angesprochen.
Die Abfrage xlsm kommt daher, dass ich den Code in Zusammenhang mit einer Vorlage xltm verwende. Somit kann es sein, dass die Mappe noch gar nie abgespeichert war. Vermutlich brauchst du dies nicht, da eine normale Datei ja immer schon gespeichert ist.
cu
Chris
AW: Speicherschleife nach Schließen über Fensterkreuz
24.08.2016 15:03:32
Dirk
Hallo Chris,
vielleicht kannst Du mir bei der Integration meiner Routine noch einmal helfen. Der Speicher und Exportcode den ich habe sieht wie folgt aus.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not [Charge] = "" Then
Cancel = True:
Call Speichern_und_Export
End If
End Sub

Option Explicit
Declare Function MakePath Lib "imagehlp.dll" Alias _
"MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

Sub Speichern_und_Export()
Dim strPath As String
Dim strPathPDF As String
'Makro Speichern
' Pfad "Z:\Projekte - Zusammenarbeit\13_TWC_QS\TWC_2\410_Produktionsunterlagen\Tagesbericht\ _
" muss individuell angepasst
strPath = "Z:\Projekte - Zusammenarbeit\13_TWC_QS\TWC_2\410_Produktionsunterlagen\ _
Tagesbericht\" & Format(Date, "yyyy") & "\" & Format(Date, "mm.yyyy") & "\"
MakePath (strPath)
Application.EnableEvents = False
ThisWorkbook.SaveAs strPath & "00" & Range("Charge"), xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
'Makro Export
' Pfad "Z:\Projekte - Zusammenarbeit\13_TWC_QS\TWC_2\410_Produktionsunterlagen\Tagesbericht\ _
" muss individuell angepasst
strPathPDF = "Z:\Projekte - Zusammenarbeit\13_TWC_QS\TWC_2\410_Produktionsunterlagen\ _
Tagesbericht\" & Format(Date, "yyyy") & "\" & Format(Date, "mm.yyyy") & "\PDF\"
MakePath (strPathPDF)
Sheets(Array("Coil", "Fehlerauflistung", "Coilfreigabe", "Fehler_Kunde", "Coil_Nacharbeit",  _
"Fehlerauflistung_Nacharbeit", "Fehler_Kunde_Nacharbeit", "Coilfreigabe_Nacharbeit")).Select
Sheets(1).Activate
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strPathPDF & "\" & Range("F5").Value & "00" & Range("Charge") & " " & Format( _
Now, "dd_mm_yyyy") & " " & Format(Time, "hh-mm-ss") & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Application.ScreenUpdating = False
Sheets(4).Select
Sheets(1).Select
Application.ScreenUpdating = True
End Sub

Mit Deinem Code möchte Excel jedesmal das Formblatt abspeichern. Ziel ist es aber gemäß des oberen Codes, einen neuen Dateinamen aus dem Inhalt der Zelle "Charge" im entsprechenden Verzeichnis abzuspeichern und dann eine pdf.Datei zu erzeugen aus Datum, Uhrzeit und Dateinamen.
Welchen Teil des Codes muss ich in Deinen integrieren? Den "Call Speichern_und_Export" Befehl oder den gesamten Code der sich dahinter befindet.
Danke im Voraus
Gruß
Dirk
Anzeige
AW: Speicherschleife nach Schließen über Fensterkreuz
24.08.2016 16:10:52
ChrisL
Hi Dirk
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not [Charge] = "" Then
Cancel = True:
Call Speichern_und_Export
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then
Select Case MsgBox("Sollen Ihre Änderungen in '" & ThisWorkbook.Name & _
"' gespeichert werden?", vbYesNoCancel + vbExclamation)
Case vbYes
If Not [Charge] = "" Then _
Call Speichern_und_Export
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub

cu
Chris
Anzeige
AW: Speicherschleife nach Schließen über Fensterkreuz
25.08.2016 07:55:44
Dirk
Hallo Chris,
vielen Dank für Deine Hilfe. Klappt super.
Gruß
Dirk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige