Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Projekt bleibt, obwohl Datei geschlossen wurde

Forumthread: VBA Projekt bleibt, obwohl Datei geschlossen wurde

VBA Projekt bleibt, obwohl Datei geschlossen wurde
Herbert
Hallo,
ein von mir geschriebenes Programm über ein UDF geschlossen wird, bleibt das VBA Projekt, obwohl die Datei geschlossen wurde. Wie kann ich die Datei schließen und auch das Entladen des VBAProjectes erzwingen? Die Variablen habe ich ebenfalls vorher zurückgesetzt.
So sieht mein Code für das schließen aus:
iCPU_ID = 0
sUserNameControl = ""
sFrage = ""
Registration.Show
Application.DisplayAlerts = False
ThisWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True
Exit Sub
Die Zeile "ThisWorkbook.Close SaveChanges:=True" habe ich auch schon mit "ActiveWorkbook.Close SaveChanges:=True" und "Workbooks("...xlsm").Close SaveChanges:=True" erfolglos getestet.
Vielen Dank schon mal im Voraus.
Gruß Herbert
Anzeige
AW: VBA Projekt bleibt, obwohl Datei geschlossen wurde
08.12.2010 11:07:07
Peter
Hallo Herbert,
das habe ich unter Excel 2003 XP schon seit einiger Zeit, ohne eine Lösung gefunden zu haben.
Es passiert immer dann, wenn an einem Makro in der betreffenden Mappe etwas geändert wurde.
Wird eine Mappe mit Makros aufgerufen, ohne ein Makro zu verändern, sondern die Makros nur zu verwenden, wird alles ordnungsgemäß entladen.
Obwohl die Mappen geschlossen wurden, kann ich die Makros in der VBA-Umgebung noch aufrufen und zumindest ansehen.
Es hilft nur, Excel komplett zu beenden und neu zu starten, denn ggf. Habe ich die Makros in der VBA-Umgebung sogar doppelt enthalten und u. U. stirbt Excel dann sogar.
Gruß Peter
Anzeige
AW: VBA Projekt bleibt, obwohl Datei geschlossen wurde
08.12.2010 14:47:42
Herbert
Hallo Peter,
genau so ist es bei mir. Das ist ein echter Sch... Da anscheinend auch niemand eine Lösung dafür hat, bleibt mir wohl nicx anderes übrig, als Excel gleich mit zu schließen. Mal sehen, ob vielleicht doch noch eine/r eine Lösung hat. Zwischenzeitlich höre ich mich mal in den MS-Foren um. Sollte ich etwas erfahren, werde ich es Dir mitteilen.
Servus
Anzeige
gibt es ein Beispiel?
08.12.2010 15:48:33
Tino
Hallo,
kannst Du mal ein solches Beispiel hochladen?
Sensible Daten kannst Du ja ändern.
Gruß Tino
AW: gibt es ein Beispiel?
08.12.2010 16:40:38
Peter
Hallo Tino,
da gibt es kein Beispiel.
Mappen, die bei mir das Problem erzeugen, machen bei anderen Anwendern überhaupt keine Probleme.
Gruß Peter
das beschriebene kenne ich...
08.12.2010 17:05:35
Tino
Hallo,
es geht mir ja nur darum,
dass man was gescheites einbauen oder umbauen kann, siehe anderen Beitrag von mir.
Gruß Tino
Anzeige
AW: das beschriebene kenne ich...
08.12.2010 17:13:15
Peter
Hallo Tino,
das passiert nicht in einer bestimmten Mappe, sondern in allen meinen Mappen.
Da muss ganz generell irgendetwas faul sein.
Überall eine 'Notlösung' einbauen erscheint mir deshlb nicht sinnvoll zu sein.
Gruß Peter
PS Ich werde wohl demnächst auf Excell 2007 umstellen.
Anzeige
AW: das beschriebene kenne ich...
08.12.2010 17:17:02
Herbert
Hallo Peter,
Du willst auf Excel 2007 umstellen? Hast Du denn noch nicht gehört, dass es seit einem halben Jahr schon Excel 2010 gibt? Ich verwende es seit Juni und bin ganz begeistert. 2007 dagegen hat meinen PC nur 2 Wochen gesehen, dann flog es im hohen Bogen runter, dieser Sch... Ich kann Dir 2010 nur wärmstens empfehlen. und es ist von der Kostenseite gleich.
Gruß Herbert
Anzeige
AW: VBA Projekt bleibt, obwohl Datei geschlossen wurde
08.12.2010 16:23:14
Tino
Hallo,
kannst auch mal dies versuchen.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim CountPersonal_XL As Integer, oWB As Workbook 
 
For Each oWB In Workbooks 
    If InStr(oWB.Name, "PERSONAL.XLS") > 0 Then 
        CountPersonal_XL = 1 
        Exit For 
    End If 
Next 
 
If Workbooks.Count - CountPersonal_XL = 1 Then 
    Application.Quit 
End If 
End Sub 
 
In Deinem Code dann
Registration.Show
Application.DisplayAlerts = False
ThisWorkbook.Save
ThisWorkbook.Close
Application.DisplayAlerts = True
Gruß Tino
Anzeige
deinen Code ändern ...
08.12.2010 17:00:37
Tino
Hallo,
setzte
Application.DisplayAlerts = True
vor
ThisWorkbook.Close
weil der Code nicht mehr zurückkehrt.
Gruß Tino
AW: VBA Projekt bleibt, obwohl Datei geschlossen wurde
08.12.2010 16:42:42
Peter
Hallo Herbert,
ich habe bereits ausgiebig gesucht und keine Lösung gefunden.
Vielleicht findest Du die Erleuchtung.
Gruß Peter
Anzeige
AW: VBA Projekt bleibt, obwohl Datei geschlossen wurde
08.12.2010 17:08:34
Herbert
Hallo Peter, hallo Tino,
nun habe ich eine Lösung gefunden! Ich schließe mit "Application.Quit" Excel gleich mit, da es eine andere Möglichkeit nicht zu geben scheint.
Vielen Dank für Euere Infos!
Gruß Herbert
nicht gedankenlos Quit einsetzen.
08.12.2010 17:15:14
Tino
Hallo,
nicht einfach gedankenlos alle Excel- Dateien schließen,
es könnten welche dabei sein die noch nicht gespeichert sind.(kann fatale Folgen haben)
Versuche es mal mit meinem Vorschlag.
Gruß Tino
Anzeige
AW: nicht gedankenlos Quit einsetzen.
08.12.2010 17:28:01
Herbert
Hallo Tino,
da Du da recht hast, habe ich mir beim Meister selbst (Hans W.) rat geholt und habe nun folgende, perfekte Lösung:
Application.DisplayAlerts = False
Workbooks.Save
Workbooks.Close
Application.Quit
Application.DisplayAlerts = True
Gruß Herbert
geht so nicht ;-)
08.12.2010 17:53:43
Tino
Hallo,
Application.DisplayAlerts = False 'dadurch werden auch andere nicht gespeicherte geschlossen
Workbooks.Save '- gibt es nicht!
Workbooks.Close '- schließt alle Dateien aber nicht die Application
'Dieser Teil wird nicht mehr ausgeführt.
Application.Quit
Application.DisplayAlerts = True
Gruß Tino
Anzeige
AW: geht so nicht ;-)
08.12.2010 17:57:24
Herbert
da hast Du recht, das habe ich nicht abgecheckt. Dann mache ich es eben anders. Danke!
Gruß Herbert
was spricht gegen meinen Vorschlag? oT.
08.12.2010 18:06:06
Tino
AW: was spricht gegen meinen Vorschlag? oT.
08.12.2010 18:17:24
Herbert
wenn Du diesen Vorschlag meinst, den habe ich nicht verstanden. warum suchst Du da nach der "PERSONAL.XLS"?
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim CountPersonal_XL As Integer, oWB As Workbook
For Each oWB In Workbooks
If InStr(oWB.Name, "PERSONAL.XLS") > 0 Then
CountPersonal_XL = 1
Exit For
End If
Next
If Workbooks.Count - CountPersonal_XL = 1 Then
Application.Quit
End If
End Sub

Anzeige
ganz einfach,...
08.12.2010 18:43:19
Tino
Hallo,
wenn die Personal.xls offen ist zählt diese auch als Datei.
Wenn nur diese Datei offen ist wird die ganze Application geschlossen,
sind weitere offen außer die Personal.xls wird nur die Datei geschlossen und nicht die ganze Application.
Stell Dir mal folgendes Szenario vor,
Du arbeitest einige Stunde an einer Excel- Datei und vergisst diese hin und wieder zu speichern.
Nun machst Du diese spezielle Datei auf um schnell was zu machen und
schon war es das auch für die andere noch offene nicht gespeicherte Datei.
Gruß Tino
Anzeige
AW: VBA Projekt bleibt, obwohl Datei geschlossen wurde
08.12.2010 17:09:04
Peter
Hallo Tino und auch alle anderen,
die beigefügten Meldungen kommen beim Excel-Abbruch.
Gruß Peter
https://www.herber.de/bbs/user/72646.doc
;
Anzeige
Anzeige

Infobox / Tutorial

VBA-Projekt erfolgreich schließen und entladen


Schritt-für-Schritt-Anleitung

Um ein VBA-Projekt in Excel zu schließen und sicherzustellen, dass es vollständig entladen wird, kannst du folgende Schritte ausführen:

  1. Makro erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle ein neues Modul.

  2. Code hinzufügen: Füge den folgenden Code in das Modul ein:

    Sub CloseExcelAndUnloadVBAProject()
        Application.DisplayAlerts = False
        ThisWorkbook.Save
        ThisWorkbook.Close SaveChanges:=True
        Application.Quit
        Application.DisplayAlerts = True
    End Sub
  3. Makro ausführen: Führe das Makro aus, um die Excel-Datei zu schließen und das VBA-Projekt zu entladen.

Wenn du sicherstellen möchtest, dass keine ungespeicherten Änderungen verloren gehen, solltest du vor dem Schließen die ThisWorkbook.Save-Methode verwenden.


Häufige Fehler und Lösungen

  • Problem: Das VBA-Projekt bleibt im Hintergrund aktiv, obwohl du die Datei geschlossen hast.

    • Lösung: Nutze Application.Quit, um Excel vollständig zu schließen. Dies sorgt dafür, dass alle VBA-Projekte entladen werden.
  • Problem: Excel stürzt ab oder verhält sich unberechenbar.

    • Lösung: Bevor du die Anwendung schließt, stelle sicher, dass alle offenen Dateien gespeichert sind, um Datenverlust zu vermeiden.
  • Problem: ThisWorkbook.Close funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob du in der richtigen Arbeitsmappe bist und dass keine anderen Makros im Hintergrund laufen, die das Schließen verhindern könnten.

Alternative Methoden

  • Workbook_BeforeClose-Ereignis: Du kannst auch das Ereignis Workbook_BeforeClose verwenden, um das Schließen der Datei zu steuern. Hier ein Beispiel:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.DisplayAlerts = False
        ThisWorkbook.Save
        Application.Quit
        Application.DisplayAlerts = True
    End Sub
  • VBA-Projekt manuell entladen: Gehe in den VBA-Editor und lade das Projekt manuell, wenn es weiterhin sichtbar ist.


Praktische Beispiele

  1. Schließen und Speichern: Um die Excel-Datei und das VBA-Projekt zu schließen, verwende:

    Sub CloseAndSave()
        Application.DisplayAlerts = False
        ThisWorkbook.Save
        ThisWorkbook.Close SaveChanges:=True
        Application.Quit
        Application.DisplayAlerts = True
    End Sub
  2. Überprüfung auf geöffnete Projekte: Stelle sicher, dass nur ein Projekt offen ist, bevor du schließt:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Dim oWB As Workbook
        Dim CountPersonal_XL As Integer
    
        For Each oWB In Workbooks
            If InStr(oWB.Name, "PERSONAL.XLS") > 0 Then
                CountPersonal_XL = 1
                Exit For
            End If
        Next
    
        If Workbooks.Count - CountPersonal_XL = 1 Then
            Application.Quit
        End If
    End Sub

Tipps für Profis

  • Überprüfe stets, ob du alle Daten gespeichert hast, bevor du Application.Quit ausführst, um Datenverlust zu vermeiden.
  • Nutze Application.DisplayAlerts = False, um unerwünschte Warnmeldungen beim Schließen zu unterdrücken.
  • Teste deine VBA-Projekte gründlich in einer sicheren Umgebung, bevor du sie in produktiven Dateien einsetzt.

FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Datei schließen und gleichzeitig das VBA-Projekt entladen? Um sowohl eine Excel-Datei zu schließen als auch das VBA-Projekt zu entladen, kannst du Application.Quit nach dem Speichern der Datei verwenden.

2. Was ist der Unterschied zwischen ThisWorkbook.Close und ActiveWorkbook.Close? ThisWorkbook.Close schließt die Arbeitsmappe, in der der Code ausgeführt wird, während ActiveWorkbook.Close die aktuell aktive Arbeitsmappe schließt, die möglicherweise eine andere sein kann.

3. Warum bleibt das VBA-Projekt manchmal aktiv, obwohl ich die Datei geschlossen habe? Dies passiert häufig, wenn Excel nicht ordnungsgemäß heruntergefahren wird. Verwende Application.Quit, um sicherzustellen, dass alle VBA-Projekte entladen werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige