Schließen und Gleich Wieder Öffnen einer Excel-Datei
Schritt-für-Schritt-Anleitung
-
Öffne den Visual Basic for Applications (VBA) Editor:
- Drücke
ALT + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“ > Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Option Explicit
Public Sub prcCloseFile()
Dim Dateivariable As String
Dateivariable = ActiveWorkbook.FullName
Application.OnTime Now + TimeValue("00:00:02"), "prcOpenFile"
ActiveWorkbook.Close SaveChanges:=False
End Sub
Public Sub prcOpenFile()
Workbooks.Open (Dateivariable)
MsgBox "Die Arbeitsmappe wurde wieder erfolgreich geöffnet"
End Sub
-
Füge einen Button hinzu:
- Gehe zurück zu Excel, füge über die Entwicklertools einen Button ein und verlinke diesen mit
prcCloseFile
.
-
Testen:
- Klicke auf den Button, um die Arbeitsmappe zu schließen und sie nach 2 Sekunden automatisch wieder zu öffnen.
Häufige Fehler und Lösungen
-
Excel öffnet und schließt gleich wieder:
- Stelle sicher, dass der Code in einem Modul steht und nicht in einem Arbeitsblattmodul.
-
Datei öffnet sich nicht nach dem Schließen:
- Überprüfe, ob
ActiveWorkbook.FullName
korrekt zugewiesen wird. Möglicherweise sollte der Code zur Öffnung der Datei in eine andere Subroutine verschoben werden, um sicherzustellen, dass sie nach dem Schließen ausgeführt wird.
-
Fehlermeldung bei Verwendung von ActiveWorkbook.Close
:
- Stelle sicher, dass du
SaveChanges:=False
verwendest, um das Speichern von Änderungen zu verhindern.
Alternative Methoden
Falls du eine andere Methode ausprobieren möchtest, kannst du auch die Verwendung von Application.OnTime
zur Planung des Schließens und Öffnens einer Datei nutzen. Hier ist ein Beispiel:
Public Sub prcCloseFileAlternative()
Dim Dateivariable As String
Dateivariable = ActiveWorkbook.FullName
Application.OnTime Now + TimeValue("00:00:02"), "prcOpenFile"
ThisWorkbook.Close SaveChanges:=False
End Sub
Diese Methode funktioniert ähnlich, verwendet jedoch ThisWorkbook
anstelle von ActiveWorkbook
.
Praktische Beispiele
-
Einfaches Schließen und Wiederöffnen:
Public Sub Beispiel1()
Call prcCloseFile
End Sub
-
Mehrere Workbooks verwalten:
Wenn du mehrere Workbooks schließen und wieder öffnen möchtest, kannst du eine Schleife implementieren, um durch eine Liste von Workbooks zu iterieren.
Tipps für Profis
-
Verwende Application.Wait
statt Application.OnTime
, wenn du nur eine einfache Verzögerung benötigst:
Application.Wait Now + TimeValue("00:00:02")
-
Fehlerbehandlung einfügen: Füge On Error Resume Next
zu Beginn deiner Prozeduren hinzu, um unerwartete Fehler zu vermeiden.
-
Makros in einem Add-In speichern: Wenn du die Funktionalität in mehreren Workbooks nutzen möchtest, kannst du deine Makros in einer Add-In-Datei speichern.
FAQ: Häufige Fragen
1. Warum funktioniert ActiveWorkbook.Close SaveChanges:=True
nicht?
Wenn du SaveChanges:=True
verwendest, wird Excel nach dem Speichern der Änderungen geschlossen. Um das Schließen ohne Speichern zu gewährleisten, nutze SaveChanges:=False
.
2. Wie kann ich sicherstellen, dass die richtigen Workbooks geöffnet und geschlossen werden?
Verwende Workbooks("WorkbookName").Close
und Workbooks.Open("WorkbookName")
, um sicherzustellen, dass du gezielt mit bestimmten Workbooks arbeitest.
3. Was bedeutet Call ThisWorkbook.Activate
?
Dieser Befehl aktiviert das aktuelle Workbook, was wichtig sein kann, wenn du mit mehreren Workbooks arbeitest, um sicherzustellen, dass die richtigen Objekte im Fokus sind.