Come ispezionare / visualizzare una macro di Excel prima di "abilitare le macro" per un foglio?


13

Di tanto in tanto ricevo un file xls che contiene una macro che dovrei usare. Se non ho completa fiducia nel mittente, desidero esaminare l'origine della macro per verificare che effettivamente faccia solo ciò che dovrebbe.

Tuttavia, in Excel 2010 il pulsante "modifica" in "Visualizza macro" è disabilitato a meno che non abilito per la prima volta le macro per il foglio, ma se abilito le macro per la prima volta, posso, al massimo, scoprire il codice dannoso solo dopo che quel codice è terminato in esecuzione...

Come posso visualizzare l'origine della macro prima di abilitare le macro per il documento?

Risposte:


13

Puoi dare un'occhiata a tutte le macro in un documento usando la scheda Sviluppatore in Word per darti un facile accesso alle routine di Visual Basic incorporate nel documento.

Per prima cosa devi assicurarti che la scheda Sviluppatore sia abilitata. Vai a File -> Opzioni quindi:

scheda sviluppatore

Nella scheda Sviluppatore che dovrebbe ora apparire, ora dovrebbe esserci un pulsante "Visual Basic" sul quale è possibile fare clic per accedere all'editor di Visual Basic.

Navigando attraverso l'albero dei documenti a sinistra dell'editor dovresti essere in grado di vedere tutto il codice e i moduli che sono incorporati nel documento senza prima dover abilitare le macro.

Tendo a farlo con documenti di cui non mi fido.

Nota: l'ho fatto in Word, la stessa funzionalità è disponibile in Excel e l'opzione per abilitarlo è nella stessa posizione.


9

In tutte le versioni di tutte le applicazioni di Office dal 2003, e possibilmente in precedenza, Alt+ F11aprirà l'editor VBA. Non è necessario abilitare la scheda "Sviluppatore" nella barra multifunzione per Office 2007 e versioni successive affinché funzioni.


2
Vale la pena notare che in molte versioni (almeno Excel), Alt+ F11può far ! SECURITY WARNING ... Enable Contentscomparire il banner " ", il che implica che l'esecuzione del codice è ora abilitata. Questo è fuorviante. Puoi dimostrarlo creando un documento con un on_open()modulo. Sarai in grado di Alt+ F11entrare e ispezionare il codice senza attivare l'evento.
Peter Vandivier,

0

Mentre le risposte di Mokubai e hBy2Py sembrano fantastiche e in effetti ti consentono di mostrare l'editor VBA, sembra che almeno in Excel da Microsoft Office Professional Plus 2016 non ti permetta ancora di visualizzare il codice.

Possiedo quella versione ed ero sicuro di aver ricevuto un XLS dannoso e volevo ispezionarlo. Dopo averlo aperto in Excel, si è aperto in modalità provvisoria come al solito e ovviamente non avevo intenzione di chiudere quella modalità. Quando ho aperto VBA Editor come indicato da altri intervistati, mi è stato presentato ... vuoto VBA Editor . Il pannello "Esplora progetti" ha mostrato utile "Nessun progetto aperto" nonostante non abbia ancora chiuso il file XLS. Solo per motivi di test, ho aperto il secondo documento (uno dei miei lavori) e immediatamente è comparso nell'editor VBA ed era (correttamente) totalmente privo di qualsiasi VBA. Tuttavia, il documento da Internet non era elencato nell'editor VBA .

Ho perso un po 'di tempo cercando di capire perché è così, e non ho trovato alcun motivo. Sembra che la mia edizione Excel semplicemente non invii moduli VBA all'editor VBA quando il documento viene caricato in modalità provvisoria. Purtroppo, VBA Editor manca di alcune funzionalità "apri VBA dal documento di Office", quindi è chiaro che Excel è il cervello qui e deve decomprimere / decodificare / qualunque sia prima il XLS.

La soluzione si è rivelata abbastanza semplice.

  1. Fare clic su Ribbon-> Developer->MacroSecurity
  2. in alternativa, File-> Options-> SecurityCenter(ultimo gruppo di opzioni) -> Settings-> Macros)
  3. Ricorda (o annota) quali sono le impostazioni correnti
  4. Modificali in "Blocca tutte le macro senza notifica"
  5. Conferma, chiudi, riapri il documento, riapri l'Editor VBA
  6. Ripristina le impostazioni originali mentre hai finito di giocare con il fuoco

effetti:

  • la notifica non è stata visualizzata
  • il documento è stato caricato completamente
  • nessuna macro è stata eseguita
  • VBA Editor ha ottenuto i moduli e ha presentato tutto il codice

Nel caso in cui tu sia curioso: sì, era davvero dannoso, piccolo esempio:

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. come puoi vedere, ho immediatamente commentato il punto di ingresso e salvato di nuovo il documento, nel caso in cui consento l'esecuzione delle macro in un determinato momento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.