Como inspecionar / exibir uma macro do Excel antes de "ativar macros" para uma planilha?


13

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

No entanto, no Excel 2010, o botão "editar" em "exibir macros" fica desabilitado, a menos que eu ative as macros para a planilha - mas se eu habilitar as macros, posso, no máximo, descobrir códigos maliciosos somente após a conclusão do código. corrida...

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

Respostas:


13

Você pode ver todas as macros em um documento usando a guia Desenvolvedor no Word para fornecer acesso fácil às rotinas do Visual Basic incorporadas no documento.

Primeiro, verifique se a guia Desenvolvedor está ativada. Vá para Arquivo -> Opções e depois:

guia desenvolvedor

Na guia Desenvolvedor que agora deve aparecer, deve haver um botã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 módulos incorporados no documento sem precisar primeiro ativar as macros.

Costumo fazer isso com documentos em que não confio.

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


9

Em todas as versões de todos os aplicativos do Office desde 2003, e possivelmente antes, o Alt+ F11abrirá o Editor do VBA. Não é necessário habilitar a guia 'Desenvolvedor' na faixa de opções do Office 2007 e mais recente para que isso funcione.


2
Vale ressaltar que em muitas versões (pelo menos no Excel), Alt+ F11pode fazer com que o ! SECURITY WARNING ... Enable Contentbanner " " desapareça, o que implica que a execução do código agora está ativada. Isso é enganador. Você pode demonstrar isso criando um documento com um on_open()módulo. Você será capaz de Alt+ F11e inspecionar o código sem disparar o evento.
Peter Vandivier

0

Embora as respostas do Mokubai e do hBy2Py pareçam ótimas e de fato permitam exibir o Editor VBA, parece que pelo menos no Excel do Microsoft Office Professional Plus 2016 ainda não permite exibir o código.

Por acaso, possuo essa versão e tinha 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 que eu não tinha a intenção de descartar esse modo. Quando abri o Editor do VBA, como outros entrevistados indicaram, fui apresentado com ... Editor do VBA vazio . O painel "Explorador de projetos" exibiu "Sem projetos abertos", apesar de eu ainda não ter fechado o arquivo XLS. Apenas para fins de teste, abri o segundo documento (um dos meus trabalhos) e ele apareceu imediatamente no Editor do VBA e era (adequadamente) totalmente desprovido de qualquer VBA. No entanto, o documento da Internet não foi listado no Editor do VBA .

Eu perdi algum tempo tentando descobrir por que é isso e não encontrei nenhuma razão. Parece que minha edição do Excel simplesmente não envia módulos VBA para o Editor VBA quando o documento é carregado no modo de segurança. Infelizmente, o VBA Editor não possui o recurso "VBA aberto do Office Document", portanto fica claro que o Excel é o cérebro aqui e ele precisa descompactar / decodificar / qualquer que seja o XLS primeiro.

A solução acabou sendo bastante 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. Restaure as configurações originais enquanto você termina de brincar com fogo

Efeitos:

  • a notificação não apareceu
  • documento foi totalmente carregado
  • nenhuma macro foi executada
  • O Editor VBA pegou os módulos e apresentou todo o código

Caso você esteja curioso: sim, era realmente malicioso, pequeno exemplo:

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

Entre. como você pode ver, comentei imediatamente o ponto de entrada e salvei novamente o documento, caso eu permita que as macros sejam executadas em algum momento posterior.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.