Comment inspecter / visualiser une macro Excel avant «d'activer les macros» pour une feuille?

13

Je reçois occasionnellement un fichier xls qui contient une macro que je devrais utiliser. Si je n'ai pas une confiance totale en l'expéditeur, je souhaite regarder la source de la macro afin de vérifier qu'elle ne fait bien que ce qu'elle est censée faire.

Cependant, dans Excel 2010, le bouton "modifier" sous "Afficher les macros" est désactivé, sauf si j'active d'abord les macros pour la feuille - mais si j'active d'abord les macros, je ne peux, au plus, découvrir des codes malveillants qu'une fois ce code terminé. fonctionnement...

Comment puis-je afficher la source de la macro avant d'activer les macros pour le document?

GJ.
la source

Réponses:

13

Vous pouvez consulter toutes les macros d'un document à l'aide de l'onglet Développeur dans Word pour vous donner un accès facile aux routines Visual Basic incorporées dans le document.

Vous devez d'abord vous assurer que l'onglet Développeur est activé. Allez dans Fichier -> Options puis:

onglet développeur

Sous l'onglet développeur qui devrait maintenant apparaître, il devrait maintenant y avoir un bouton "Visual Basic" sur lequel vous pouvez cliquer pour accéder à l'éditeur Visual Basic.

En parcourant l'arborescence du document à gauche de l'éditeur, vous devriez pouvoir voir tout le code et les modules qui sont incorporés dans le document sans avoir à activer les macros au préalable.

J'ai tendance à le faire avec des documents auxquels je ne fais pas confiance.

Remarque: je l'ai fait dans Word, la même fonctionnalité est disponible dans Excel et l'option pour l'activer est au même endroit.

Mokubai
la source
9

Dans toutes les versions de toutes les applications Office depuis 2003, et peut-être plus tôt, Alt+ F11ouvrira l'éditeur VBA. Il n'est pas nécessaire d'activer l'onglet «Développeur» dans le ruban pour Office 2007 et plus récent pour que cela fonctionne.

hBy2Py
la source
2
Il convient de noter que dans de nombreuses versions (Excel au moins), Alt+ F11peut entraîner la ! SECURITY WARNING ... Enable Contentdisparition de la bannière " ", ce qui implique que l'exécution du code est désormais activée. C'est trompeur. Vous pouvez le démontrer en créant un document avec un on_open()module. Vous pourrez Alt+ entrer F11et inspecter le code sans déclencher l'événement.
Peter Vandivier
0

Bien que les réponses de Mokubai et hBy2Py semblent excellentes et vous permettent en effet d'afficher l'éditeur VBA, il semble qu'au moins dans Excel à partir de Microsoft Office Professional Plus 2016 ne vous laisse toujours pas afficher le code.

Il se trouve que je possède cette version et j'étais sûr d'avoir reçu un XLS malveillant et je voulais l'inspecter. Après l'avoir ouvert dans Excel, il s'est ouvert en mode sans échec comme d'habitude et bien sûr, je n'avais aucune intention de rejeter ce mode. Lorsque j'ai ouvert VBA Editor comme d'autres répondants l'ont indiqué, on m'a présenté ... VBA Editor vide . Le panneau "Explorateur de projets" affiche utilement "Aucun projet ouvert" bien que je n'aie pas encore fermé le fichier XLS. Juste pour le plaisir de tester, j'ai ouvert un deuxième document (un de mes travaux) et il est immédiatement apparu dans VBA Editor et était (correctement) totalement dépourvu de VBA. Cependant, le document provenant d'Internet n'était pas répertorié dans l'éditeur VBA .

J'ai perdu un peu de temps à essayer de comprendre pourquoi, et je n'ai trouvé aucune raison. Il semble que mon édition Excel n'envoie tout simplement pas de modules VBA à l'éditeur VBA lorsque le document est chargé en mode sans échec. Malheureusement, VBA Editor n'a pas de fonctionnalité "VBA ouvert depuis Office Document", il est donc clair qu'Excel est le cerveau ici et qu'il doit décompresser / décoder / quel que soit le XLS en premier.

La solution s'est avérée assez simple.

  1. Cliquez sur Ribbon-> Developer->MacroSecurity
  2. alternativement, File-> Options-> SecurityCenter(dernier groupe d'options) -> Settings-> Macros)
  3. Rappelez-vous (ou notez) quels sont les paramètres actuels
  4. Remplacez-les par "Bloquer toutes les macros sans notification"
  5. Confirmer, fermer, rouvrir le document, rouvrir VBA Editor
  6. Restaurer les paramètres d'origine pendant que vous avez fini de jouer avec le feu

Effets:

  • la notification ne s'est pas présentée
  • le document a été entièrement chargé
  • aucune macro n'a été exécutée
  • VBA Editor a obtenu les modules et présenté tout le code

Au cas où vous seriez curieux: oui, c'était en effet malveillant, petit exemple:

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. comme vous pouvez le voir, j'ai immédiatement commenté le point d'entrée et réenregistré le document, au cas où j'autoriserais les macros à s'exécuter à un moment donné plus tard.

quetzalcoatl
la source