Romero: Überprüfen, ob eine gewisse Excel-Mappe offen ist

Beitrag lesen

Hy unknown,

Workbook_BeforeSave speichert ja nicht, sondern wird von Excel aufgerufen vor dem Speichern.
Ich glaube nicht, daß es an dieser Funktion liegt, diese hat ja keinen Einfluss auf die Buttonklick_A320.Buttons_erstellen-Funktion welche den Fehler erzeugt. Sie ruft sie nur auf, ohne Parameter und soweit ich das sehe werden auch keine globalen Variablen verändert, die von Buttonklick_A320.Buttons_erstellen verwendet werden könnten/sollten.

Wie gesagt, ich denke, dass es nicht direkt an meinem Makro liegt. Weil mit explizitem Aufruf OpenExcel.Run "Buttonklick_A320.Buttons_erstellen" im VBScript, kann ich ja dieses Makro starten.

Der Fehler tritt erst auf, wenn ich die Mappe mittels JS schließen möchte. Und da ich aber in EXCEL in der Mappe, diverse Sub's habe (Workbook_BeforeSave() & Workbook_BeforeClose()), vermute ich, dass es an den beiden Sub's Workbook_BeforeSave() & Workbook_BeforeClose() liegt (nach ausgiebigen Tests herausgefunden).

Gehe ich also den einfachen Schritt:
Javascript starten -> Dateneingabe -> Daten an VBScript übergeben -> in VBScript Tabellenblatt mit den Daten erstellen (Mappe ist offen und enthält verschiedene Sub's) -> zurück an Javascript -> Button mit Speichern & Beenden -> Speicher-Button drücken und Mappe Speichern und schließen.

Lasse ich z.B. Workbook_BeforeSave() & Workbook_BeforeClose() weg, und gehe, wie oben beschrieben, den einfach Weg, dann bekomm ich weder eine Fehlermeldung noch irgendwas anderes. Die Mappe wird gespeichert und geschlossen.

Wenn ich also die Mappe in JS schließen möchte, wird in der Mappe ja das Sub Workbook_BeforeClose() gestartet. Und da "beißt" sich halt irgendwas miteiander. Das selbe ist bei Workbook_BeforeSave() der Fall, wenn ich aus JS speichern möchte.

Leider würde ich die beiden Sub's aber weiterhin nutzen wollen. Aber das geht halt leider nicht. Oder gibt es die Möglichkeit, aus JS zu EXCEL, explizite Sub's auszuklammern bzw. an der Ausführung zu hindern?
In VBA gibt es da eine Möglichkeit mit Application.EnableEvents = False (Makros ausschalten).

LG Romero