Podczas gdy odpowiedzi Mokubai i hBy2Py wydają się świetne i rzeczywiście pozwalają pokazać edytor VBA, wydaje się, że przynajmniej w Excelu z Microsoft Office Professional Plus 2016 nadal nie pozwala ci zobaczyć kodu.
Zdarzyło mi się mieć tę wersję i byłem pewien, że otrzymałem złośliwy XLS i chciałem go sprawdzić. Po otwarciu w programie Excel otworzył się jak zwykle w trybie awaryjnym i oczywiście nie miałem zamiaru go wyłączać. Kiedy otworzyłem Edytor VBA, jak wskazali inni respondenci, pokazano mi ... pusty Edytor VBA . Panel „Project explorer” wyświetlał pomocniczo komunikat „Brak otwartych projektów”, mimo że nie zamknąłem jeszcze pliku XLS. Dla celów testowych otworzyłem drugi dokument (jeden z moich prac), który natychmiast pojawił się w VBA Editor i był (właściwie) całkowicie pozbawiony VBA. Jednak dokument z Internetu nie był wymieniony w edytorze VBA .
Zmarnowałem trochę czasu, próbując dowiedzieć się, dlaczego tak jest, i nie znalazłem żadnego powodu. Wygląda na to, że moja wersja programu Excel po prostu nie wysyła modułów VBA do edytora VBA, gdy dokument jest ładowany w trybie awaryjnym. Niestety edytorowi VBA brakuje funkcji „otwórz VBA z dokumentu Office”, więc jasne jest, że Excel jest tutaj mózgiem i musi najpierw rozpakować / zdekodować / cokolwiek XLS.
Rozwiązanie okazało się dość proste.
- Kliknij
Ribbon
-> Developer
->MacroSecurity
- alternatywnie
File
-> Options
-> SecurityCenter
(ostatnia grupa opcji) -> Settings
-> Macros
)
- Pamiętaj (lub zanotuj), jakie są bieżące ustawienia
- Zmień je na „Blokuj wszystkie makra bez powiadomienia”
- Potwierdź, zamknij, ponownie otwórz dokument, ponownie otwórz VBA Editor
- Przywróć oryginalne ustawienia po zakończeniu gry z ogniem
Efekty:
- powiadomienie nie pojawiło się
- dokument został w pełni załadowany
- nie wykonano żadnych makr
- VBA Editor dostał moduły i przedstawił cały kod
Jeśli jesteś ciekawy: tak, to rzeczywiście był złośliwy, mały przykład:
Function marcopoloko()
marcopoloko = Left("CM to inches converter", 2) + Right("fed.ex", 4) + "e " + "/c" + numneroop + amagilocard
End Function
'Sub Workbook_Open()
'If xlTickMarkOutside > 0 Then
'Shell marcopoloko + """", xlXmlExportSuccess
'End If
'End Sub
BTW. jak widać, natychmiast skomentowałem punkt wejścia i ponownie zapisałem dokument, na wypadek, gdy pozwolę makrom uruchomić się w pewnym momencie później.
Alt
+F11
może spowodować! SECURITY WARNING ... Enable Content
zniknięcie banera „ ”, co oznacza, że wykonanie kodu jest teraz włączone. To jest mylące. Możesz to zrobić, tworząc dokument zon_open()
modułem. Będziesz mógłAlt
+ wejśćF11
i sprawdzić kod bez odpalenia zdarzenia.