Workbook open funktioniert nicht, wenn Workbook per Schaltfläche neu gestartet wird
Hallo
folgende Vorgehensweise funktioniert nicht:
a.) Geöffnetes Dokument (Test.xlsm) soll per Schaltfläche ("Close and Open") neu geöffnet werden.
a.) diese Fehlermeldung soll dabei mit Application.DisplayAlerts = False unterdrückt werden:
"Test.xlsm ist bereits geöffnet. Wenn Sie es erneut öffnen, verlieren Sie damit alle Änderungen, die Sie eingegeben haben. Soll Test.xlsm erneut geöffnet werden?"
c.) beim Öffnen der Datei soll die MSGBox "Test" angezeigt werden.
Wenn ich nun die Schaltfläche "Close and Open" betätige, wird zwar die Datei neu geöffnet, aber die MessageBox wird nicht angezeigt (Workbook_Open wird also nicht ausgeführt).
Wenn ich anstatt die Schaltfläche zu drücken, die Datei über den Explorer öffne, dann wird Workbook_Open ausgeführt.
Hat jemand eine Ahnung warum das über die Schaltfläche nicht geht?
Danke
folgende Vorgehensweise funktioniert nicht:
a.) Geöffnetes Dokument (Test.xlsm) soll per Schaltfläche ("Close and Open") neu geöffnet werden.
a.) diese Fehlermeldung soll dabei mit Application.DisplayAlerts = False unterdrückt werden:
"Test.xlsm ist bereits geöffnet. Wenn Sie es erneut öffnen, verlieren Sie damit alle Änderungen, die Sie eingegeben haben. Soll Test.xlsm erneut geöffnet werden?"
c.) beim Öffnen der Datei soll die MSGBox "Test" angezeigt werden.
Wenn ich nun die Schaltfläche "Close and Open" betätige, wird zwar die Datei neu geöffnet, aber die MessageBox wird nicht angezeigt (Workbook_Open wird also nicht ausgeführt).
Wenn ich anstatt die Schaltfläche zu drücken, die Datei über den Explorer öffne, dann wird Workbook_Open ausgeführt.
Hat jemand eine Ahnung warum das über die Schaltfläche nicht geht?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 376822
Url: https://administrator.de/contentid/376822
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
14 Kommentare
Neuester Kommentar
Du hast da einen Denkfehler.
Ein Dokument selbst kann sich nicht erst selbst schließen und wieder neu öffnen, das geht so nicht, denn wie sollte das Makro das Dokument neu öffnen wenn im Dokument das Makro noch läuft und damit das Dokument also noch geöffnet ist??
Das geht nur aus einem anderen parallel geöffnetem Dokument oder aus einem anderen Instanz/Programm oder separatem VBS aus, oder per Exec extern gestartem Prozess (z.B. per Run-Methode) der das Neuöffnen nach dem Schließen übernimmt.
Ein Dokument selbst kann sich nicht erst selbst schließen und wieder neu öffnen, das geht so nicht, denn wie sollte das Makro das Dokument neu öffnen wenn im Dokument das Makro noch läuft und damit das Dokument also noch geöffnet ist??
Das geht nur aus einem anderen parallel geöffnetem Dokument oder aus einem anderen Instanz/Programm oder separatem VBS aus, oder per Exec extern gestartem Prozess (z.B. per Run-Methode) der das Neuöffnen nach dem Schließen übernimmt.
Ich hatte eigentlich Ihm geantwortet nicht dir ...
Was du machen kannst wäre z.B. folgendes für den Code hinter dem Button:
Das startet eine asynchron gestartete versteckte Shell die 1 Sekunde wartet während das Dokument zwischenzeitlich geschlossen wird, und dann das Dokument nach der Pause erneut öffnet.
Sub btnReload()
CreateObject("Wscript.Shell").Run "cmd /c timeout /t 1 && start """" """ & ThisWorkbook.FullName & """", 0, False
ThisWorkbook.Close True
End Sub
Nur wird mir beim Öffnen nicht die Workbook_Open ausgeführt.
Logisch, weil duApplication.DisplayAlerts = False
vorher gesetzt hast und dir damit alle aufpoppenden Dialogfelder selber deaktivierst ... Das ist eine permanente Einstellung die Neustarts von Excel überlebt!Siehe meine Lösung zum Reload für dein Problem in meinem letzten Post. So wie du das machen willst geht dass nicht.
Guckst du
https://we.tl/ixBGaiP11K
Setzt das um was ich dir im Post oben geschrieben habe.
musst du natürlich vorher mindestens einmal im VBA ausführen (Über eine Testmethode oder im Direktfenster) damit die Ausgabe wieder aktiviert ist, denn wie gesagt, das ist eine permanente Einstellung die Neustarts von Excel überlebt.
https://we.tl/ixBGaiP11K
Setzt das um was ich dir im Post oben geschrieben habe.
Application,DisplayAlerts = True
musst du natürlich vorher mindestens einmal im VBA ausführen (Über eine Testmethode oder im Direktfenster) damit die Ausgabe wieder aktiviert ist, denn wie gesagt, das ist eine permanente Einstellung die Neustarts von Excel überlebt.
Freut mich das es dir hilft .
Zitat von @mreske:
Eine Frage hätte ich noch,
wie müsste der quellcode lauten wenn die Datei auf einem anderen Laufwerk liegt:
A:\Daten\Test\VBA\OpenAndClose.xlsm
Keine Änderung nötig, denn den Pfad holt es sich über ThisWorkbook.FullName automatisch.Eine Frage hätte ich noch,
wie müsste der quellcode lauten wenn die Datei auf einem anderen Laufwerk liegt:
A:\Daten\Test\VBA\OpenAndClose.xlsm