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


Je reçois occasionnellement un fichier xls qui contient une macro que je devrais utiliser. Si je n'ai pas entièrement confiance en l'expéditeur, je souhaite examiner 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 peux tout au plus découvrir le code malveillant fonctionnement...

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


11
2018-03-16 16:45


origine




Réponses:


Vous pouvez consulter toutes les macros d'un document en utilisant l'onglet Développeur dans Word pour vous permettre d'accéder facilement 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:

developer tab

Dans 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 de documents à gauche de l'éditeur, vous devriez pouvoir voir tous les codes et modules incorporés dans le document sans avoir à activer les macros au préalable.

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

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


9
2018-03-16 17:22





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


9
2018-03-25 22:22



Il convient de noter que dans de nombreuses versions (Excel au moins), Alt+F11 peut causer le "! SECURITY WARNING ... Enable Content"bannière pour disparaître, impliquant cette exécution de code est maintenant activée. C'est trompeur. Vous pouvez en faire la démonstration en créant un document avec un on_open() module. Vous pourrez Alt+F11 et inspecter le code sans déclencher l'événement. - Peter Vandivier


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

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

J'ai perdu du 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 ne dispose pas de la fonction "open VBA from Office Document", il est donc clair que Excel est le cerveau ici et qu'il doit décompresser / décoder / peu importe 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'option) ->Settings->Macros)
  3. Rappelez-vous (ou notez) quels sont les paramètres actuels
  4. Changez-les pour "Bloquer toutes les macros sans notification"
  5. Confirmer, fermer, rouvrir le document, rouvrir l'éditeur VBA
  6. Restaurer les paramètres d'origine pendant que vous avez fini de jouer avec le feu

Effets:

  • notification ne s'est pas présentée
  • le document a été entièrement chargé
  • aucune macros 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, il s’agissait bien de mal, 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 à fonctionner plus tard.


0
2017-10-19 09:51