Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Datei öffnen und aufrufende Datei schließen


Betrifft: Datei öffnen und aufrufende Datei schließen von: Thorsten
Geschrieben am: 18.08.2016 19:58:33

Hallo zusammen,

ich habe ein Problem, das mich langsam zur Verzweiflung treibt und ich hoffe, dass mir hier jemand helfen kann.

Ich habe zwei Dateien (File1.xlsm + File2.xlsm) im gleichen Ordner. In File1 habe ich einen _ Button, mit dem ich File2 öffne:



Sub Schaltfläche1_Klicken()
    Workbooks.Open ("File2.xlsm")
    MsgBox "File2 geöffnet"
End Sub

In der open-Routine in File 2 schließe ich File 1:


Private Sub Workbook_Open()
    Workbooks("File1.xlsm").Close
    MsgBox "File1 geschlossen"
End Sub

Das Problem ist, dass keine MsgBox angezeigt wird, der Code in File 2 also nach dem Schließen _
nicht weiter ausgeführt wird. Dass nach dem Öffnen das "File 2 geöffnet" nicht ausgegeben wird _
kann ich nachvollziehen, aber warum wird nach dem




Workbooks("File1.xlsm").Close
kein Code mehr ausgeführt? Auch wenn in File1 dann noch das BeforeClose-Event ausgelöst wird sollte der Code dann doch nach meiner Logik zurück zum File2 springen und den Rest ausführen!?

Kann mir bitte jemand die Logik dahinter bzw. meinen Denkfehler erklären ;)?

Danke und viele Grüße
Thorsten

  

Betrifft: AW: Datei öffnen und aufrufende Datei schließen von: Hajo_Zi
Geschrieben am: 18.08.2016 20:01:52

Hallo Torsten,

warum schließt Du sie nicht in
Sub Schaltfläche1_Klicken()

GrußformelHomepage


  

Betrifft: AW: Datei öffnen und aufrufende Datei schließen von: Thorsten
Geschrieben am: 18.08.2016 22:12:27

Moin Hajo,

danke für den Hinweis. Ich möchte sichergehen, dass File1 sicher geschlossen ist, bevor der weitere Code in File2 ausgeführt wird, da ich File1 dann umbenennen möchte. Wenn ich es nach deinem Vorschlag mache bekomme ich eine Zugriffsverletzung. Ich glaube ich muss mein Programm etwas näher erklären:

Ich habe ein umfangreiches Tool programmiert, mit dem mehrere Personen arbeiten (ich nenne es jetzt mal Tool.xlsm). Wenn ich ein Update verteilen möchte, lade ich die aktuelle Datei mit dem Namen "Tool_new.xlsm" auf einen FTP-Server hoch. Starten die Nutzer ihr lokales "Tool.xlsm" lädt es automatisch die aktuelle Version "Tool_new.xlsm" auf den lokalen Rechner. Anschließend möchte ich dafür sorgen, dass die neue Version auch in "Tool.xlsm" umbenannt wird, aber vollautomatisch. Deswegen würde ich aus Tool automatisch Tool_new aufrufen, Tool beenden und in Tool_old umbenennen, Tool_old aufrufen, Tool_new beenden, Tool_new in Tool umbenennen, Tool aufrufen und dann Tool_old schließen und löschen. Aber das klappt einfach nicht, weil entweder der Code nicht weiter ausgeführt wird oder ich eine Zugriffsverletzung erhalte, da scheinbar die Datei noch nicht geschlossen ist.

Ich hoffe man kann etwa nachvollziehen was ich vorhabe :D. Was mache ich falsch? Oder geht das gar nicht???

Falls Codeschnipsel zum besseren Verständnis benötigt werden bitte melden.

Viele Grüße
Thorsten


  

Betrifft: AW: Datei öffnen und aufrufende Datei schließen von: fcs
Geschrieben am: 19.08.2016 05:49:21

Hallo Thorsten,

du kannst alle Aktionen von der alten Tooldatei aus steuern.
Unmittelbar vor dem Schliessen der umbenannten alten Tooldatei musst du ein Makro in der neuen Tooldatei starten für weitere Aktionen, u.a. zeitverzögert das Löschen der dann geschlossenen alten Tool-Datei.

1. Prüfen, ob neue Tool-Datei vorhanden
2. ggf. neue Tool-Datei kopieren nach lokal
3. geöffnete alte Tooldatei speichern unteer Tool_Old.xlsm
4. neue Tool_New.xlsm schreibgeschützt öffnen
5. neue Tool_New.xlsm speichern unter Tool.xlsm, dabei vorübergehend Ereignismakros deaktivieren
6. Makro in Tool.xlsm starten per RUN "Tool.xlsm!Makroname, das unter anderem die alte Tool_Old.xlsm zeitverzögert löscht
7. Tool_Old.xlsm ohne speichern schliessen.

Hier eine Beispiel-Datei mit den erforderlichen Makros.
https://www.herber.de/bbs/user/107705.zip
Extrahiere die Excel-Datei und öffne die Datei ohne die Makros zu aktivieren und richte im Makro den Dateinem(Pfad) für die Tool_New.xlsm ein und ggf. das Kopieren vom FTP-Server.

Ich hab es in der Datei so eingetrichtet, dass das Datum des letzten Tool-Updates in eine Zelle eingetragen wird und beim Öffnen der Datei mit dem aktuellen Datum verglichen wird.
Ist das letzte Update vor weniger als 5 Tagen durchgeführt worden, dann wird kein Tool-Update durchgeführt. Diesen Zeitraum musst du ggf. anpassen oder eine andere Prüfung einbauen, um zu vermeiden, dass das gleiche Update mehrfach durchgeführt wird, wenn die neue Version über einen längeren Zeitraum auf dem Server liegt.


Gruß
Franz


  

Betrifft: AW: Datei öffnen und aufrufende Datei schließen von: Thorsten
Geschrieben am: 21.08.2016 22:12:52

Hallo Franz,

das ist ja mal wahnsinnig nett...vielen vielen Dank :)!!! Ich hab´s leider noch nicht implementieren können, werde ich in den kommenden Tagen nachholen, aber der Code sieht logisch und nachvollziehbar aus. Falls dann doch noch Fragen offen sind werde ich mich nochmal melden ;).

Für die Updateprüfung verwende ich übrigens nicht das Datum, sondern vergebe eine Versionsnummer in der SW und verwende die Versionsnummer im Dateinamen auf dem Server. So kann ich leicht prüfen, ob ich die aktuelle Version auf dem PC hab.

Vielen Dank nochmal und einen schönen Abend noch!


Viele Grüße
Thorsten


  

Betrifft: AW: Datei öffnen und aufrufende Datei schließen von: Thorsten
Geschrieben am: 22.08.2016 21:41:59

Hallo Franz,

das ist ja mal wahnsinnig nett...vielen vielen Dank :)!!! Ich hab´s leider noch nicht implementieren können, werde ich in den kommenden Tagen nachholen, aber der Code sieht logisch und nachvollziehbar aus. Falls dann doch noch Fragen offen sind werde ich mich nochmal melden ;).

Für die Updateprüfung verwende ich übrigens nicht das Datum, sondern vergebe eine Versionsnummer in der SW und verwende die Versionsnummer im Dateinamen auf dem Server. So kann ich leicht prüfen, ob ich die aktuelle Version auf dem PC hab.

Vielen Dank nochmal und einen schönen Abend noch!


Viele Grüße
Thorsten


Beiträge aus den Excel-Beispielen zum Thema "Datei öffnen und aufrufende Datei schließen"