Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm schliessen Datei speichern ect.

Forumthread: UserForm schliessen Datei speichern ect.

UserForm schliessen Datei speichern ect.
22.03.2016 16:18:08
Peter
Hallo Excel-Spezialisten,
beisse mir gerade die Zähne aus.
Ich möchte die Userform schliessen, die Datei speichern ohne Meldung und Excel beenden ebenfalls ohne Meldung zum Speichern.
Private Sub CommandButton14_Click()
Application.DisplayAlerts = False
For Each w In Application.Workbooks
w.Save
Next w
Application.Quit
End Sub
Was mache ich hier falsch? Beim Schliessen kommt Meldung zum Speichern.
Habe unter diese Arbeitsmappe folgendes:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
End Sub

Danke für Eure Hilfe.
Gruss Peter

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm schliessen Datei speichern ect.
22.03.2016 16:27:33
UweD
versuch es mal so

Private Sub CommandButton14_Click()
For Each w In Application.Workbooks
w.Close savechanges:=True
Next w
Application.Quit
End Sub
Gruß UweD

AW: UserForm schliessen Datei speichern ect.
22.03.2016 17:06:16
Peter
Hallo Uwe,
besten Dank für Deine Hilfe. In einem Bereich meines Programmes
funktioniert der Code einwandfrei.
Jetzt habe ich aber noch eine Userform von welcher aus ich einen Serienbrief öffne und nach dem Öffnen die Datei speichern möchte ohne Meldung und Excel beenden.
Ich habe folgenden Code:
Sub test_wordöffnen()
Dim sPath As String
Dim WDatei As String
Dim w As String
sPath = Range("A2").Value & "\"
WDatei = Range("P20").Value
'1 = vbNormalFocus
'2 = Minimized
'3 = Maximized
'    Open_File "c:\Users\Peter\Desktop\Kopierkosten 2016-02-26\ _
Serienbrief_Hauptformular_Lehrer_Klassen1.docm", 1
Open_File sPath & "Serienbrief_Hauptformular_Lehrer_Klassen1.docm", 1
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
Call Excel_beenden
End Sub

Sub Excel_beenden()
ThisWorkbook.Save
Application.Quit
End Sub
Leider funktioniert dies nicht. Vielleicht kannst Du mir auch hier helfen.
Besten Dank
Gruss Peter

Anzeige
AW: UserForm schliessen Datei speichern ect.
23.03.2016 08:34:49
UweD
Hallo
genauso..
Anstelle von dem hier und dem Unterprogramm (UNGEPRÜFT)

If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If

Sub Excel_beenden()
ThisWorkbook.Save
Application.Quit
End Sub
Das hier..

Open_File sPath & "Serienbrief_Hauptformular_Lehrer_Klassen1.docm", 1
ThisWorkbook.Close savechanges:=True
Application.Quit
End Sub

Gruss UweD

Anzeige
AW: UserForm schliessen Datei speichern ect.
23.03.2016 09:51:27
Peter
Hallo Uwe,
besten Dank für Deine Hilfe.
Ich habe im Unterprogramm nachstehendes:
Sub Excel_beenden()
ThisWorkbook.Save
ThisWorkbook.Saved = True
Application.Quit
End Sub
und im Hauptprogramm:
... Open_File sPath & "Serienbrief_Hauptformular_Lehrer_Klassen1.docm", 1
Call Excel_beenden
Application.Quit
End Sub Und dies funktioniert einwandfrei.
Alle anderen Methoden die ich angewandt habe führten nicht zum Erfolg.
Frag mich nicht warum, Hauptsache es geht.
Nochmals besten Dank für die Hilfe und noch einen schönen Tag.
Gruss Peter
Anzeige
;
Anzeige

Infobox / Tutorial

UserForm schließen, Datei speichern und Excel beenden


Schritt-für-Schritt-Anleitung

  1. UserForm schließen und Datei speichern: Um die UserForm zu schließen und die Datei zu speichern, kannst du folgenden VBA-Code verwenden:

    Private Sub CommandButton14_Click()
       Application.DisplayAlerts = False
       For Each w In Application.Workbooks
           w.Save
       Next w
       Application.Quit
    End Sub

    Stelle sicher, dass die DisplayAlerts-Eigenschaft auf False gesetzt ist, um die Meldungen zu unterdrücken.

  2. Implementiere das Schließen der Arbeitsmappe: In der Workbook_BeforeClose-Ereignisprozedur überprüfst du, ob die Arbeitsmappe gespeichert werden muss:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       If ThisWorkbook.Saved = False Then
           ThisWorkbook.Save
       End If
    End Sub
  3. Zusätzliches Speichern in deiner Funktion: Wenn du eine UserForm verwendest, um einen Serienbrief zu öffnen, kannst du folgenden Code implementieren:

    Sub test_wordöffnen()
       Dim sPath As String
       Dim WDatei As String
       sPath = Range("A2").Value & "\"
       WDatei = Range("P20").Value
       Open_File sPath & "Serienbrief_Hauptformular_Lehrer_Klassen1.docm", 1
       Call Excel_beenden
    End Sub
    
    Sub Excel_beenden()
       ThisWorkbook.Save
       Application.Quit
    End Sub

    Dieser Code stellt sicher, dass die Datei gespeichert wird, bevor Excel beendet wird.


Häufige Fehler und Lösungen

  • Meldung beim Schließen: Wenn du beim Schließen der UserForm eine Meldung erhältst, überprüfe, ob du ThisWorkbook.Saved auf True setzt, nachdem du die Datei gespeichert hast.

    Sub Excel_beenden()
       ThisWorkbook.Save
       ThisWorkbook.Saved = True
       Application.Quit
    End Sub
  • Funktioniert nicht wie gewünscht: Wenn der Code nicht wie erwartet funktioniert, stelle sicher, dass die Pfade korrekt gesetzt sind und dass du die richtige Excel-Version verwendest.


Alternative Methoden

Eine andere Methode, um die Datei und Excel zu schließen, besteht darin, die Close-Methode anstelle von Quit zu verwenden:

For Each w In Application.Workbooks
    w.Close savechanges:=True
Next w

Diese Methode schließt alle geöffneten Arbeitsmappen und speichert die Änderungen.


Praktische Beispiele

Hier sind einige praktische Beispiele, die du in deiner UserForm verwenden kannst:

  1. Öffnen eines Word-Dokuments und Excel schließen:

    Sub test_wordöffnen()
       Dim sPath As String
       sPath = Range("A2").Value & "\"
       Open_File sPath & "Serienbrief_Hauptformular_Lehrer_Klassen1.docm", 1
       Call Excel_beenden
    End Sub
  2. Speichern und Beenden in einer Funktion:

    Sub Excel_beenden()
       ThisWorkbook.Save
       Application.Quit
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Integriere Fehlerbehandlungsroutinen, um unerwartete Fehler abzufangen. Zum Beispiel:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Debugging: Nutze Debug.Print, um Variablenwerte zu überprüfen und die Ausführung deines Codes zu verfolgen.


FAQ: Häufige Fragen

1. Warum bekomme ich eine Meldung beim Schließen von Excel? Wenn du eine Meldung bekommst, könnte das daran liegen, dass die Arbeitsmappe nicht als gespeichert markiert ist. Stelle sicher, dass ThisWorkbook.Saved = True gesetzt wird, nachdem du die Datei gespeichert hast.

2. Was ist der Unterschied zwischen Save und Close? Save speichert die aktuellen Änderungen, während Close die Arbeitsmappe schließt und dabei die Möglichkeit gibt, Änderungen zu speichern oder zu verwerfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige