Wie kann man ein Excel-Makro überprüfen / anzeigen, bevor man Makros für ein Blatt aktiviert?

13

Ich erhalte gelegentlich eine XLS-Datei, die ein Makro enthält, das ich verwenden sollte. Wenn ich dem Absender nicht vollständig vertraue, möchte ich die Quelle des Makros überprüfen, um zu überprüfen, ob es tatsächlich nur das tut, was es soll.

In Excel 2010 ist die Schaltfläche "Bearbeiten" unter "Makros anzeigen" jedoch deaktiviert, es sei denn, ich aktiviere zuerst Makros für das Blatt. Wenn ich jedoch zuerst Makros aktiviere, kann ich höchstens erst nach Abschluss dieses Codes Informationen über schädlichen Code erhalten Laufen...

Wie kann ich die Quelle des Makros anzeigen, bevor ich Makros für das Dokument aktiviere?

GJ.
quelle

Antworten:

13

Sie können alle Makros in einem Dokument anzeigen, indem Sie die Registerkarte Entwickler in Word verwenden, um einfachen Zugriff auf die im Dokument eingebetteten Visual Basic-Routinen zu erhalten.

Zuerst müssen Sie sicherstellen, dass die Registerkarte Entwickler aktiviert ist. Gehen Sie dann zu Datei -> Optionen:

Registerkarte Entwickler

Auf der Registerkarte Entwickler, die jetzt angezeigt werden soll, sollte sich jetzt eine Schaltfläche "Visual Basic" befinden, auf die Sie klicken können, um zum Visual Basic-Editor zu gelangen.

Wenn Sie durch den Dokumentbaum links im Editor blättern, sollten Sie den gesamten Code und die Module sehen können, die in das Dokument eingebettet sind, ohne zuvor Makros aktivieren zu müssen.

Ich mache das eher mit Dokumenten, denen ich nicht vertraue.

Hinweis: Ich habe dies in Word getan. Die gleiche Funktion ist in Excel verfügbar und die Option zum Aktivieren befindet sich an derselben Stelle.

Mokubai
quelle
9

In allen Versionen aller Office-Anwendungen seit 2003 und möglicherweise früher öffnet Alt+ F11den VBA-Editor. Es ist nicht erforderlich, die Registerkarte "Entwickler" in der Multifunktionsleiste für Office 2007 und höher zu aktivieren, damit dies funktioniert.

hBy2Py
quelle
2
Es ist erwähnenswert, dass in vielen Versionen (zumindest in Excel) Alt+ F11das ! SECURITY WARNING ... Enable ContentBanner " " verschwinden kann, was bedeutet, dass die Codeausführung jetzt aktiviert ist. Das ist irreführend. Sie können dies demonstrieren, indem Sie ein Dokument mit einem on_open()Modul erstellen . Sie werden in der Lage sein Alt+ F11in und den Code zu überprüfen , ohne das Ereignis zu feuern.
Peter Vandivier
0

Während die Antworten von Mokubai und hBy2Py großartig erscheinen und es Ihnen tatsächlich ermöglichen, den VBA-Editor anzuzeigen, können Sie den Code zumindest in Excel von Microsoft Office Professional Plus 2016 immer noch nicht anzeigen.

Ich besitze zufällig diese Version und war mir sicher, dass ich ein bösartiges XLS erhalten habe und es überprüfen wollte. Nachdem ich es in Excel geöffnet hatte, wurde es wie gewohnt im abgesicherten Modus geöffnet, und natürlich hatte ich nicht die Absicht, diesen Modus zu schließen. Als ich den VBA-Editor wie von anderen Befragten angegeben geöffnet habe, wurde mir ... ein leerer VBA-Editor angezeigt . Im Bereich "Projektexplorer" wurde hilfreich "Keine offenen Projekte" angezeigt, obwohl ich die XLS-Datei noch nicht geschlossen habe. Nur zum Testen habe ich das zweite Dokument (eines meiner Werke) geöffnet und es wurde sofort im VBA-Editor angezeigt und war (ordnungsgemäß) völlig frei von VBA. Das Dokument aus dem Internet wurde jedoch nicht im VBA-Editor aufgeführt .

Ich habe einige Zeit damit verschwendet, herauszufinden, warum das so ist, und keinen Grund gefunden. Es scheint, dass meine Excel-Edition einfach keine VBA-Module an den VBA-Editor sendet, wenn das Dokument im abgesicherten Modus geladen wird. Leider fehlt dem VBA-Editor die Funktion "VBA aus Office-Dokument öffnen", sodass klar ist, dass Excel hier das Gehirn ist und zuerst das XLS entpacken / dekodieren / muss.

Die Lösung erwies sich als recht einfach.

  1. Klicken Sie auf Ribbon-> Developer->MacroSecurity
  2. alternativ File-> Options-> SecurityCenter(letzte Optionsgruppe) -> Settings-> Macros)
  3. Denken Sie an die aktuellen Einstellungen (oder schreiben Sie sie auf)
  4. Ändern Sie sie in "Alle Makros ohne Benachrichtigung blockieren".
  5. Bestätigen Sie, schließen Sie, öffnen Sie das Dokument erneut, öffnen Sie den VBA-Editor erneut
  6. Stellen Sie die ursprünglichen Einstellungen wieder her, während Sie mit dem Feuer fertig sind

Auswirkungen:

  • Benachrichtigung wurde nicht angezeigt
  • Dokument wurde vollständig geladen
  • Es wurden keine Makros ausgeführt
  • Der VBA-Editor hat die Module erhalten und den gesamten Code präsentiert

Falls Sie neugierig sind: Ja, es war in der Tat ein bösartiges, winziges Beispiel:

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

Übrigens. Wie Sie sehen, habe ich den Einstiegspunkt sofort auskommentiert und das Dokument erneut gespeichert, falls ich die Ausführung der Makros zu einem späteren Zeitpunkt zulasse.

quetzalcoatl
quelle