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

Forumthread: Laufzeitfehler 1004 bei ActiveWorkbook.Close

Laufzeitfehler 1004 bei ActiveWorkbook.Close
04.11.2015 13:29:45
Ron
Hallo,
ich stehe mal wieder auf dem Schlauch. Ich habe gerade eine Datei fertig, die mit diversen Makros gefüttert ist. Da ich die Steuerung der Programmabläufe über Buttoms regele, wollte ich auch einen mit dem Programmablauf für das Beenden belegen. Aber egal was ich mache. Ich bekomme grundsätzlich einen Laufzeitfehler 1004 - Die Close Methode des Windowsobjektes kann nicht ausgeführt werden oder Die Methode Close für das Objekt Workbooks ist fehlgeschlagen. Ich nutze lediglich den Befehl Workbooks.Close oder alternativ getestet activeworkbook.close. Das Ergebnis ist immer gleich...
In "Dieser Arbeitsmappe" nutze ich folgenden Ablauf, um beim Start der Datei durch einrücken der Menüleiste mehr Sichtfeld zu haben.
Private Sub Workbook_Activate()
Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", false)"
End Sub
Private Sub Workbook_Deactivate()
Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", True)"
End Sub

Wenn ich das rausnehme funktioniert das Beenden. Wie kann ich beim Speichern diese beiden Subs "deaktivieren"?
Danke für die Hilfe
Ron

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 bei ActiveWorkbook.Close
04.11.2015 13:37:33
Ron
Habe es gefunden.
Ich nutze jetzt vor dem Schliessen Application.EnableEvents = False und dann funzt es.
Grüße
Ron
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 1004 bei ActiveWorkbook.Close beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 1004 bei der Verwendung von ActiveWorkbook.Close in Excel VBA zu beheben, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Finde das passende Modul:

    • Suche das Modul, in dem sich der Code befindet, der den Fehler verursacht.
  3. Deaktiviere Events vor dem Schließen:

    • Füge vor dem Befehl ActiveWorkbook.Close den folgenden Code hinzu:
      Application.EnableEvents = False
      ActiveWorkbook.Close
      Application.EnableEvents = True
    • Dadurch verhinderst du, dass die Workbook_Activate und Workbook_Deactivate Subs beim Schließen der Arbeitsmappe aktiv werden.
  4. Teste den Code:

    • Führe den Code aus und überprüfe, ob der Fehler weiterhin auftritt.

Häufige Fehler und Lösungen

  • Fehler: "Die Close Methode des Windowsobjektes kann nicht ausgeführt werden":

    • Lösung: Stelle sicher, dass keine offenen Dialoge oder Fenster das Schließen der Arbeitsmappe blockieren.
  • Fehler: "Die Methode Close für das Objekt Workbooks ist fehlgeschlagen":

    • Lösung: Überprüfe, ob andere Makros oder Events den Schließvorgang stören. Das Deaktivieren von Events hilft oft.

Alternative Methoden

Wenn die oben genannten Lösungen nicht funktionieren, kannst du folgende Alternativen ausprobieren:

  • Verwendung von ThisWorkbook:

    Application.EnableEvents = False
    ThisWorkbook.Close
    Application.EnableEvents = True
  • Speichern vor dem Schließen:

    Application.EnableEvents = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.EnableEvents = True

Diese Alternativen können helfen, den Fehler zu vermeiden, insbesondere wenn die Datei Änderungen enthält.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du ActiveWorkbook.Close in einem Button-Click-Ereignis verwenden kannst:

Private Sub btnClose_Click()
    Application.EnableEvents = False
    If MsgBox("Möchten Sie die Datei wirklich schließen?", vbYesNo) = vbYes Then
        ActiveWorkbook.Close
    End If
    Application.EnableEvents = True
End Sub

In diesem Beispiel wird der Benutzer gefragt, ob er die Datei schließen möchte, und das Deaktivieren der Events verhindert, dass unerwünschte Makros ausgeführt werden.


Tipps für Profis

  • Fehlersuche: Verwende On Error Resume Next, um Fehler abzufangen und den Code weiterhin auszuführen. Dies kann hilfreich sein, wenn du mehrere Schließvorgänge in einem Makro hast.
  • Debugging: Setze Haltepunkte in deinem Code, um zu sehen, an welcher Stelle der Fehler auftritt.

FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 1004? Der Laufzeitfehler 1004 tritt auf, wenn Excel VBA eine Methode nicht ausführen kann, z.B. beim Schließen einer Arbeitsmappe.

2. Welche Rolle spielt Application.EnableEvents? Application.EnableEvents steuert, ob Ereignisse in Excel (wie Workbook_Open oder Workbook_Close) ausgelöst werden. Das Deaktivieren dieser Funktion kann helfen, unerwünschte Makros zu verhindern.

3. Warum funktioniert ActiveWorkbook.Close manchmal nicht? Es kann sein, dass andere geöffnete Dialoge, fehlende Berechtigungen oder aktive Makros den Schließvorgang stören.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige