Das VBA ActiveWorkbook von Excel ist "Nichts", wenn "Bearbeiten aktivieren" in ProtectedView aktiviert ist

Ich habe ein VBA-Makro, das von einer Tabellenkalkulationsfunktion (benutzerdefinierte Funktion, UDF) aufgerufen wird. Wenn die Tabelle aus dem Internet heruntergeladen wird und der Benutzer die Einstellungen für das "Vertrauensstellungscenter" entsprechend festgelegt hat, wird die Tabelle in der so genannten "geschützten Ansicht" geöffnet. Die Funktion wird nicht aufgerufen. Eine Schaltfläche "Bearbeitung aktivieren" wird angezeigt. Wenn die Schaltfläche gedrückt wird, wird die Tabelle als "vertrauenswürdig" eingestuft und normal wieder geöffnet, um die Berechnung zu starten und damit die benutzerdefinierte Funktion aufzurufen.

In dieser VBA-Funktion ist jedoch der Wert vonApplication.ActiveWorkbook istNothing. Dies kann im Debugger überprüft werden.

Da ich nur einige Eigenschaften (wie den Pfadnamen) der Tabelle lesen muss, könnte ich alternativ die Verfügbarkeit von prüfenApplication.ActiveProtectedViewWindow Dies sollte auf die geschützte Version der Arbeitsmappe verweisen. Im Debugger kann dieses Objekt überprüft werden. Läuft jedoch in Release (ohne Debug) der Wert vonApplication.ActiveProtectedViewWindow ist auchNothing.

Beide Verhaltensweisen - insbesondere das erste - scheinen ein in Excel 2010 und 2013 vorhandener Fehler zu sein (siehe auchein Beitrag im MSDN-Forum ).

Frage: Gibt es eine Möglichkeit, Eigenschaften der zu bekommenaktive Arbeitsmappe nachdem es für die Bearbeitung aktiviert wurde?

PS: Im Anschluss an die nette Beobachtung von Siddharth Rout könnte "ThisWorkbook" funktionieren: In meinem Fall ist das Makro nicht Teil des geöffneten Workbook. Die UDF ist in einer XLA definiert. Daher würde ThisWorkbook auf die XLA verweisen. Ich brauche das ActiveWorkbook (= die Arbeitsmappe, die die UDF aufruft) anstelle von ThisWorkbook (= die Arbeitsmappe, die die UDF ausführt).

WICHTIGE ANFORDERUNGEN:

Meine Funktion wird als benutzerdefinierte Funktion aufgerufen, d. H. Die Ausführungsreihenfolge wird durch Excel-Aktualisierung der Zelle bestimmt.

Die Funktion ist nicht Teil der geöffneten Arbeitsmappe. Es ist Teil eines XLA.

Ich kann der geöffneten Arbeitsmappe keinen Code hinzufügen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage