VBA ActiveWorkbook programu Excel to „Nic”, gdy „Włącz edycję” z ProtectedView

Mam makro VBA, które jest wywoływane z funkcji arkusza kalkulacyjnego (funkcja zdefiniowana przez użytkownika, UDF). Gdy arkusz kalkulacyjny zostanie pobrany z Internetu i użytkownik ustawi odpowiednio ustawienia „Centrum zaufania”, arkusz kalkulacyjny zostanie otwarty w tak zwanym „Widoku chronionym”. Funkcja nie zostanie wywołana. Zostanie wyświetlony przycisk „Włącz edycję”. Po naciśnięciu przycisku arkusz kalkulacyjny jest „zaufany” i normalnie ponownie otwierany, rozpoczynając obliczenia, a zatem wywołując funkcję zdefiniowaną przez użytkownika.

Jednak w tej funkcji VBA wartośćApplication.ActiveWorkbook jestNothing. Można to sprawdzić w debuggerze.

Ponieważ muszę tylko odczytać niektóre właściwości (np. Nazwę ścieżki) arkusza kalkulacyjnego, mógłbym ewentualnie sprawdzić dostępnośćApplication.ActiveProtectedViewWindow które powinny odnosić się do chronionej wersji skoroszytu. W debuggerze ten obiekt można sprawdzić. Jednak uruchomiony w wersji (bez debugowania) wartośćApplication.ActiveProtectedViewWindow jest równieżNothing.

Oba zachowania - zwłaszcza pierwsze - wydają się być błędem występującym w Excelu 2010 i 2013 (zobacz takżepost na forum MSDN ).

Pytanie: Czy istnieje sposób na uzyskanie właściwościaktywny skoroszyt po włączeniu do edycji?

PS: Jako kontynuacja miłej obserwacji Siddharth Rout, to „ThisWorkbook” może działać: w moim przypadku makro nie jest częścią otwartego skoroszytu. UDF jest zdefiniowany w XLA. W związku z tym ten podręcznik odwoływałby się do XLA. Muszę pobrać ActiveWorkbook (= skoroszyt wywołujący UDF) zamiast ThisWorkbook (= skoroszyt z uruchomionym UDF).

WAŻNE WYMAGANIA:

Moja funkcja jest wywoływana jako funkcja zdefiniowana przez użytkownika, tj. Kolejność wykonywania jest określana przez program Excel aktualizujący komórkę.

Funkcja nie jest częścią otwieranego skoroszytu. Jest częścią XLA.

Nie mogę dodać żadnego kodu do otwartego skoroszytu.

questionAnswers(6)

yourAnswerToTheQuestion