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

Forumthread: VBA aktive Datei schließen und wieder öffnen

VBA aktive Datei schließen und wieder öffnen
03.12.2015 17:12:42
Norman
Hi,
ich habe eine Excel-Datei mit einem Button erstellt.
Bei Klick auf den Button, soll diese Excel-Datei ohne Speichern geschlossen
und im nächsten Schritt wieder geöffnet werden. Dies soll quasi ein Reset des
aktiven Tabellenblattes werden. Da die Maske jedoch vom Inhalt her etwas komplex mit Formeln, dynamischen Grafiken etc. bestückt ist, kann ich hierfür nicht einfach clear.content verwenden. Daher wäre es einfacher, das aktive Tabellenblatt (oder die ganze Datei) ungespeichert zu schließen und im nächsten Atemzug wieder zu öffnen.
Ich hab nur keine Ahnung, ob und wie das mit VBA möglich ist.
Danke im Voraus
P.S.: Ich verwende Excel 2003 und die Datei hat das Attribut schreibgeschützt.

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 17:28:42
Herbert
Hallo Norman,
so sollte es gehen

Application.DisplayAlerts = False
Workbooks(WorkBookName).Close savechanges:=False
Application.DisplayAlerts = True
Workbooks.Open Filename:="C:\xxx\xxx.xlsm"
Servus

AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 17:29:27
Nepumuk
Hallo,
teste mal:
Option Explicit

Public Sub Schaltfläche1_Klicken()
    Call Application.OnTime(EarliestTime:=Now, Procedure:="Dummy", Schedule:=True)
    Call ThisWorkbook.Close(SaveChanges:=False)
End Sub

Public Sub Dummy()
End Sub

Gruß
Nepumuk

Anzeige
AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 18:05:24
Norman
Danke euch beiden für die schnelle Antwort.
Leider fällt Möglichkeit 1 aus, da die Datei mitunter dynamisch bewegt wird.
Möglichkeit 2 von Nepumuk funktioniert ansich super, aber ich bekomme dann die folgende Meinung Userbild

Anzeige
AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 18:09:49
Nepumuk
Hallo,
na du musst die Dummy-Prozedur auch einfügen.
Public Sub Dummy()
End Sub
Gruß
Nepumuk

AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 18:21:09
Norman

Public Sub Dummy()
End Sub
Ist drin. Wie gesagt, die Datei lädt auch neu. Und dann kommt die Meldung.
Kann weggedrückt werden und danach funktioniert auch alles. Ist halt nur nervig, die Meldung wegzudrücken.

Anzeige
AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 18:31:44
Nepumuk
Hallo,
die Prozedur muss in ein Standardmodul.
Gruß
Nepumuk

AW: VBA aktive Datei schließen und wieder öffnen
03.12.2015 18:44:31
Norman
Da lag der Fehler :)
Funktioniert, hab Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA aktive Datei schließen und wieder öffnen


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei mit VBA zu schließen und sie anschließend wieder zu öffnen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  3. Schreibe den VBA-Code: Füge den folgenden Code in das Modul ein:

    Sub DateiSchliessenUndOeffnen()
       Application.DisplayAlerts = False ' Deaktiviere Warnmeldungen
       ThisWorkbook.Close savechanges:=False ' Schließe die aktive Datei ohne zu speichern
       Application.DisplayAlerts = True ' Aktiviere Warnmeldungen wieder
       Workbooks.Open Filename:="C:\Pfad\Zu\DeinerDatei.xlsx" ' Öffne die Datei erneut
    End Sub
  4. Ändere den Dateipfad: Stelle sicher, dass du den Pfad zu deiner Datei anpasst.

  5. Füge einen Button hinzu: Gehe zurück zu deiner Excel-Oberfläche, füge einen Button hinzu und verlinke ihn mit der DateiSchliessenUndOeffnen-Prozedur.

Jetzt kannst du die Excel-Datei schließen und sofort wieder öffnen, indem du auf den Button klickst.


Häufige Fehler und Lösungen

  • Fehler: „Die Datei kann nicht gefunden werden“

    • Lösung: Überprüfe den Dateipfad im Code. Stelle sicher, dass die Datei existiert und der Pfad korrekt ist.
  • Fehler: „Möchten Sie die Änderungen speichern?“

    • Lösung: Stelle sicher, dass savechanges:=False korrekt gesetzt ist, um die Datei ohne Speichern zu schließen.
  • Fehler: „Die Prozedur Dummy ist nicht definiert“

    • Lösung: Stelle sicher, dass die Dummy-Prozedur im gleichen Modul wie die Hauptprozedur definiert ist, falls du sie verwendest.

Alternative Methoden

Eine andere Möglichkeit, eine Excel-Datei zu schließen, besteht darin, die OnTime-Methode zu verwenden. Hier ist ein Beispiel:

Public Sub Schaltfläche1_Klicken()
    Call Application.OnTime(EarliestTime:=Now, Procedure:="Dummy", Schedule:=True)
    ThisWorkbook.Close SaveChanges:=False
End Sub

Public Sub Dummy()
End Sub

Mit dieser Methode kannst du die Datei programmgesteuert schließen, ohne dass der Benutzer eine Warnung erhält.


Praktische Beispiele

Angenommen, du hast ein komplexes Arbeitsblatt und möchtest sicherstellen, dass alles nach dem Schließen und Öffnen wieder in den Ursprungszustand versetzt wird. Hier ist ein Beispiel für einen Button, der dies bewerkstelligt:

  1. Erstelle einen Button und verlinke ihn mit der DateiSchliessenUndOeffnen-Prozedur.
  2. Füge eine weitere Prozedur hinzu, um spezifische Formeln oder Grafiken zu laden, falls erforderlich.

Dies könnte so aussehen:

Sub DatenZuruecksetzen()
    ' Hier spezifische Anweisungen einfügen, um Daten zurückzusetzen
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies kann helfen, die Leistung zu verbessern, während du die Datei schließt und öffnest.

  • Auf Fehlermeldungen achten: Wenn du mit Application.DisplayAlerts = False arbeitest, kann es sein, dass wichtige Warnungen unterdrückt werden. Überlege, ob du das vorübergehend deaktivierst.

  • Regelmäßige Backups: Stelle sicher, dass du regelmäßige Backups deiner Datei machst, insbesondere wenn du häufig Änderungen vornimmst.


FAQ: Häufige Fragen

1. Kann ich eine Datei schließen, ohne die Änderungen zu speichern?
Ja, indem du den Befehl ThisWorkbook.Close savechanges:=False verwendest, schließt du die Datei ohne Speicherung.

2. Wie kann ich eine bestimmte Datei öffnen, nachdem ich sie geschlossen habe?
Du musst den Dateipfad in der Workbooks.Open-Methode angeben, wie im Beispiel oben gezeigt.

3. Funktioniert das auch in neueren Excel-Versionen?
Ja, der VBA-Code funktioniert sowohl in Excel 2003 als auch in neueren Versionen wie Excel 2016 oder Excel 365. Achte jedoch darauf, dass der Code auf die spezifische Version angepasst sein könnte.

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