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

workbooks.close schließt nicht alles

Forumthread: workbooks.close schließt nicht alles

workbooks.close schließt nicht alles
13.02.2022 12:33:18
SL3V1N
Moin zusammen,
seit längerer Zeit bin ich nun stiller Mitleser gewesen, in der so einige meiner VBA- Probleme dank euch gelöst werden konnten. Ein dickes Dankeschön dafür schonmal!
Nun habe ich allerdings ein kleines Problem, welches ich nicht so ohne weiteres über die SuFu lösen konnte:
Ich habe eine User Form mit (unter Anderem) 3 Befehlsschaltflächen: "Abbrechen & Schließen", "Mail sofort versenden" und "Mail anzeigen".
Am Ende einer jeden Prozedur der Schaltfläche soll das Formular, sowie die Arbeitsmappe geschlossen werden. Dies funktioniert auch soweit einwandfrei. Nur bleibt jedes Mal eine leere Arbeitsmappe geöffnet, die ich manuell schließen muss.
Ich hoffe, das allwissende Forums- Orakel hat auch dafür eine Lösung parat.
Hier der Code des Abbrechen- Buttons:

Private Sub cmb_abbrechen_Click()
Unload Me
Workbooks("Datei.xlsm").Close SaveChanges:=False
End Sub
Vielen Dank und viele Grüße
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 12:41:54
Stefan
Workbooks("Datei.xlsm").Close SaveChanges:=False
application.quit
End Sub
AW: workbooks.close schließt nicht alles
13.02.2022 12:51:05
SL3V1N
Hallo Stefan,
danke für die schnelle Antwort. Leider ändert sich nichts. Die leere Arbeitsmappe bleibt geöffnet.
AW: workbooks.close schließt nicht alles
13.02.2022 12:55:31
onur
"Ich hoffe, das allwissende Forums- Orakel hat auch dafür eine Lösung parat." ?
Bestimmt NICHT anhand vier Zeilen deines Codes.
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 13:00:41
SL3V1N
Der Button hat nun mal nur diese 4 Zeilen. Die anderen 2 Schaltflächen haben natürlich mehr Code. Ich dachte nur, ich reduziere die Anfrage auf den Teil, der nicht funktioniert.
AW: workbooks.close schließt nicht alles
13.02.2022 13:05:31
onur
Woher willst DU denn wissen, WO der Fehkler ist ? Wenn du es wüsstest, bräuchtest du doch kein Forum, oder ?
Du hast ja offensichtlich MEHRERE Dateien irgenwo im Code geöffnet, die vier Zeilen Code schliessen nur EINE davon.
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 13:02:38
ralf_b
die Lösung liegt möglicherweise nicht darin wie man das schließt, sondern wie du deine Dateien öffnest.
Hast du dazu mehr Infos?
AW: workbooks.close schließt nicht alles
13.02.2022 13:15:04
SL3V1N
Hallo Ralf,
die Idee ist, die Excel- Datei normal zu öffnen (per Doppelklick). Dann startet automatisch folgende Prozedur:

Public Sub workbook_open()
Application.WindowState = xlMinimized
Servicecall_eingabe.Show
End Sub
Die Arbeitsmappe wird minimiert und die User Form aktiviert. Wenn der Nutzer dann seine Eingaben getätigt hat, wird er auf eine der Schaltflächen klicken und beides (User Form und Arbeitsmappe) sollen ohne zu speichern geschlossen werden.
Sorry wenn ich nicht genügend Informationen gepostet habe. Wie ihr seht bin ich total neu hier und überhaupt in der VBA- Welt. Da sind mir die üblichen Gepflogenheiten noch nicht so ganz geläufig. Aber ich gelobe Besserung.
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 15:12:09
ralf_b
Workbooks("Datei.xlsm").Close SaveChanges:=False läßt darauf schließen das du diese Datei erst erzeugt hast.
Schreib doch mal Thisworkbook.close SaveChanges:=False um die Datei mit dem Code zu schließen.
AW: workbooks.close schließt nicht alles
13.02.2022 15:23:17
Jens
Leider bleibt alles beim Alten.
Mir ist aber aufgefallen, dass dann oben in der Leiste der leeren Arbeitsmappe, wo normalerweise der Dateiname zu sehen ist, einfach nur Excel steht.
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 15:28:28
ralf_b
dann öffnest du zwischendurch evtl. noch eine Instanz
AW: workbooks.close schließt nicht alles
13.02.2022 15:44:29
Jens
Ich habe alles durchgesehen, aber nichts finden können. Vielleicht sollte ich euch wirklich mal den kompletten Code geben? (Onur hat ja schon so nett gefragt)
oder im anderen Forum gibts ne Lösung o.T
13.02.2022 16:26:35
ralf_b
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 15:33:12
onur
Oh danke, jetzt haben wir schon ACHT Zeilen Code. Waaahnsinn !
Wer es jetzt immer noch nicht erraten kann, was der Fehler ist, ist es selber schuld, oder ?
Wo ist der KOMPLETTE CODE ?
AW: workbooks.close schließt nicht alles
13.02.2022 15:43:10
Jens
Das kann man auch etwas freundlicher formulieren!
Wie und in welcher Form teile ich euch denn am besten den Code mit? Einfach hier posten? Oder besser als Datei hochladen?
Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 15:44:55
onur
"Das kann man auch etwas freundlicher formulieren! "
Das habe ich schon zuvor versucht.
Am besten wäre die Datei.
AW: workbooks.close schließt nicht alles
13.02.2022 16:27:56
onur
Alle Befehle HINTER Close können nicht mehr abgearbeitet werden, da ja die Datei mitsamt Makro weg ist.
SO musst du es machen:

Private Sub cmb_abbrechen_Click()
ThisWorkbook.Saved = True
Application.Quit
End Sub

Anzeige
AW: workbooks.close schließt nicht alles
13.02.2022 16:38:48
onur
Deshalb solltest du die Datei mit dem Makro nicht mit Close schliessen, sondern nur so.
Das ist sonst, als ob du den Ast absägst, auf dem du sitzt.
AW: workbooks.close schließt nicht alles
14.02.2022 07:11:32
Jens
Mega, es funktioniert nun! Vielen vielen Dank!!

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Arbeitsmappe in Excel mit VBA korrekt schließen


Schritt-für-Schritt-Anleitung

Um eine Arbeitsmappe in Excel mit VBA korrekt zu schließen, kannst du die folgende Methode verwenden. Achte darauf, dass du den richtigen Befehl und die passenden Parameter nutzt.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Erstelle eine UserForm oder ein Modul, wo du den Code platzieren möchtest.
  3. Verwende den folgenden Code, um die Arbeitsmappe zu schließen:
Private Sub cmb_abbrechen_Click()
    ThisWorkbook.Saved = True
    Application.Quit
End Sub

Mit ThisWorkbook.Saved = True wird sichergestellt, dass Excel die Arbeitsmappe nicht nach dem Speichern fragt, bevor sie geschlossen wird.


Häufige Fehler und Lösungen

Ein häufiges Problem bei der Verwendung von workbooks.close ist, dass eine leere Arbeitsmappe geöffnet bleibt. Hier sind einige Lösungen:

  • Problem: Die leere Arbeitsmappe bleibt geöffnet.
    Lösung: Stelle sicher, dass du ThisWorkbook.Close SaveChanges:=False verwendest, um die Arbeitsmappe, die den Code enthält, zu schließen.

  • Problem: Excel lässt sich nicht schließen.
    Lösung: Überprüfe, ob andere Arbeitsmappen oder Instanzen von Excel geöffnet sind. Nutze Application.Workbooks.Close um alle offenen Arbeitsmappen zu schließen.

  • Problem: .Close SaveChanges:=False funktioniert nicht.
    Lösung: Vergewissere dich, dass der Code in der richtigen Prozedur aufgerufen wird und dass keine anderen Makros oder Formulare offen sind, die das Schließen verhindern.


Alternative Methoden

Falls die oben genannten Methoden nicht funktionieren, kannst du die folgenden Alternativen ausprobieren:

  • Verwende ActiveWorkbook.Close SaveChanges:=False anstelle von ThisWorkbook.Close.
  • Nutze Application.Workbooks.Close für das Schließen aller offenen Arbeitsmappen auf einmal.
  • Überlege, ob ein DoEvents vor dem Schließen notwendig ist, um sicherzustellen, dass alle vorherigen Aktionen abgeschlossen sind.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Schließen von Arbeitsmappen in verschiedenen Szenarien umsetzen kannst:

  1. Schließen einer bestimmten Arbeitsmappe:
Workbooks("Datei.xlsm").Close SaveChanges:=False
  1. Schließen der aktiven Arbeitsmappe:
ActiveWorkbook.Close SaveChanges:=False
  1. Schließen aller Arbeitsmappen:
For Each wb In Application.Workbooks
    wb.Close SaveChanges:=False
Next wb

Diese Beispiele zeigen, wie du mit workbooks.close und anderen Befehlen effizient arbeiten kannst.


Tipps für Profis

  • Stelle sicher, dass du während der Entwicklung den Code schrittweise testest, um Fehler frühzeitig zu erkennen.
  • Nutze Debug.Print, um den Status von Variablen und Objekten während der Ausführung zu überprüfen.
  • Halte deinen Code sauber und gut strukturiert, um die Wartung zu erleichtern. Kommentiere deinen Code ausführlich, damit du und andere später leicht verstehen, was jede Zeile bewirken soll.

FAQ: Häufige Fragen

1. Warum bleibt eine leere Arbeitsmappe nach dem Schließen offen?
Das liegt oft daran, dass eine Instanz von Excel oder eine andere Arbeitsmappe geöffnet bleibt. Verwende ThisWorkbook.Close oder Application.Workbooks.Close, um sicherzustellen, dass alle Arbeitsmappen geschlossen werden.

2. Wie kann ich verhindern, dass Excel nach dem Schließen speichert?
Du kannst SaveChanges:=False in deinem Close-Befehl verwenden, um Excel anzuweisen, keine Änderungen zu speichern.

3. Was mache ich, wenn workbooks.close nicht funktioniert?
Überprüfe, ob der Code korrekt platziert ist und keine anderen Prozesse das Schließen der Arbeitsmappe verhindern. Teste auch alternative Methoden, wie das Schließen der aktiven Arbeitsmappe.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige