Como inspecionar / visualizar uma macro do Excel antes de “ativar macros” para uma planilha?

12

Estou recebendo ocasionalmente um arquivo xls que contém uma macro que devo usar. Se não tenho total confiança no remetente, desejo examinar a origem da macro para verificar se ela realmente faz apenas o que é suposto.

No entanto, no Excel 2010, o botão "editar" em "visualizar macros" é desativado, a menos que eu ative as macros para a planilha - mas se eu ativar as macros, posso, no máximo, descobrir códigos maliciosos somente depois disso o código terminou de ser executado ...

Como posso ver a fonte da macro antes de ativar macros para o documento?

    
por GJ. 16.03.2013 / 17:45

3 respostas

9

Você pode dar uma olhada em todas as macros em um documento usando a guia Desenvolvedor no Word para facilitar o acesso às rotinas do Visual Basic incorporadas no documento.

Primeiro, você precisa se certificar de que a guia Desenvolvedor esteja ativada. Vá para Arquivo - > Opções então:

NaguiaDesenvolvedorquedeveapareceragora,devehaveragoraumbotão"Visual Basic", no qual você pode clicar para acessar o editor do Visual Basic.

Navegando pela árvore de documentos à esquerda do editor, você poderá ver todo o código e os módulos que estão incorporados no documento sem primeiro precisar ativar as macros.

Eu costumo fazer isso com documentos nos quais não confio.

Nota: Eu fiz isso no Word, o mesmo recurso está disponível no Excel e a opção para ativá-lo está no mesmo lugar.

    
por 16.03.2013 / 18:22
9

Em todas as versões de todos os aplicativos do Office desde 2003, e possivelmente antes, Alt + F11 abrirá o Editor do VBA. Não há necessidade de ativar a guia "Desenvolvedor" na faixa de opções do Office 2007 e mais recente para que isso funcione.

    
por 25.03.2015 / 23:22
0

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.

  1. Clique em Ribbon - > Developer - > MacroSecurity
  2. alternativamente, File - > Options - > SecurityCenter (último grupo de opções) - > Settings - > Macros )
  3. Lembre-se (ou anote) quais são as configurações atuais
  4. Altere-os para "Bloquear todas as macros sem notificação"
  5. Confirme, feche, reabra o documento, reabra o Editor do VBA
  6. 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.

    
por 19.10.2017 / 11:51