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

Beitrag lesen

Ich habe die Lösung:

Ich baue in meiner Mappe ein weiteres Modul ein.

In diesem Modul deklariere ich eine globale (Public) Variable:

  
Option Explicit  
  
Public Status As Boolean   ' False = Aufruf nich vom VB-Script'  
                           ' True = Aufruf vom VB-Script'  
  
Private Sub setStatus()  
    Status = True  
End Sub

Dann baue ich eine Abfrage in BeforeClose() bzw. BeforeSave() ein:

  
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
    If Status Then Exit Sub  
End Sub  
  
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
    If Status Then Exit Sub  
End Sub

Und diese ganze Sache starte ich aus meinem VBScript heraus:

Dim ExcelApp, ExcelWB  
Set ExcelApp= createobject("Excel.Application")  
Set ExcelWB = ExcelApp.Workbooks.Open("C:\Mappe.xls")  
ExcelApp.Run "Mappe.xls!modul1.setStatus"

Das Ganze bewirkt, dass die Variable "Status" als FALSE gesetzt wurde.
Öffne ich nun die Mappe händisch, so bleibt Status = FALSE. Öffne ich aber aus meinem Script heraus, so wird die Funktion setStatus ausgeführt, wo Status nun auf TRUE gesetzt wird.
Und wenn das ist, dann werden die beiden Sub's (Workbook_BeforeClose & Workbook_BeforeSave) verlassen, noch bevor sie ausgeführt werden.

Ich danke dir trotzdem unknown für die vielen zahlreichen Tipps, gerade das übergeben eines Objektes an JS zurück.

Weiß du auch, wie man z.B. 2 Objekte gleichzeitig übergibt?

LG Romero