VBA-Code vom Arbeitsblatt trennen / auslagern
Derzeit (Ende Februar 2016) kursiert ein ausgesprochen unangenehmer „Trojaner“ (Virus) im Internet. MS Word- und auch Excel-Dateien enthalten einen VBA-Code, welcher automatisch gestartet wird und eine „Ransomware” (Erpresser-Software) aus dem Netz herunterlädt. Danach werden die Daten der eigenen Festplatte/n sowie vielfach auch die in der über das Internet verbundenen Cloud-Speicher verschlüsselt und somit unlesbar gemacht. Ein Text dieser Erpresser sagt Ihnen dann, dass Sie gegen eine Zahlung (derzeit ca. 200,00 €) eine Möglichkeit erhalten, die verschlüsselten Daten zu entsperren. Während das FBI vor ca. 1 Monat allen Betroffenen dazu riet, den geforderten Betrag zu bezahlen, um an die Daten zu gelangen sieht das BSI (Bundesamt für Sicherheit in der Informationstechnologie) das genau anders und rät davon ab, zu bezahlen. Es sei ja nicht sicher, dass dann auch die Möglichkeit der Freigabe „geliefert“ wird.
Was aber, wenn Ihnen ein Dienstleister eine Excel-Datei mit VBA-Code liefern soll? OK, im Normalfall werden Sie Ihren Auftragnehmer kennen und ihm vertrauen. Aber was ist mit Hilfeleistungen, die Sie vielleicht in Fach-Foren erhalten? Nicht, dass wir einem der Helfer böswilliges Handeln unterstellen, aber derzeit ist noch nicht veröffentlicht, ob sich solch ein Trojaner vielleicht irgendwo auf der Festplatte einnistet und sich nach getaner Arbeit (Programmierung) in eine *.xlsm oder *.xlsb einnistet.
Aus Gründen der Datenhygiene gilt ab sofort und ohne Ausnahme: Unser Vorgehen wird künftig so sein: Der Code einer Datei wird getrennt als reine Textdatei ausgeliefert. Die Dateiendung wird *.bas oder *.cls bzw. *.frm sein. Diese Files sind so aufgebaut, dass auch ein ungeübter User den Code und die „reine“ Excel-Datei „verheiraten“ kann. Damit ist gemeint, dass wir Helfer auch erkennen können, wo der Code abgelegt wurde; das kann manchmal entscheidend bei der Fehlersuche sein. – Nach Vereinbarung kann es durchaus sein, dass wir von uns erstellten bzw. korrigierten VBA-Code als plain Text liefern.
Export nach *.bas bzw. *.cls oder *.frm
Das VBA-Programm ist geschrieben, getestet und für gut befunden worden. Wir speichern (für die künftige Verwendung) die Datei ganz normal als *.xlsm oder *.xlsb. Jetzt wird der Export des Codes initiiert:
Speichern Sie die erzeugte Datei an beliebiger Stelle. Öffnen Sie diese der Kontrolle wegen in einem beliebigen Text-Editor (nicht Textverarbeitung). Für diese drei Zeilen wurde dieser Code erzeugt:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Tabelle1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Option Explicit
Sub GMG()
MsgBox "Hallo Günther"
End Sub
Und da es sich um eine reine Textdatei mit einer anderen Endung handelt, können Sie auch durchaus kontrollieren, was da drin steckt. Hier ist es nichts Verdächtiges. In Excel entfernen wir nun noch allen VBA-Code und speichern das File als ganz normale *.xlsx. Wenn diese Datei nun beispielsweise auf einem anderen Rechner geöffnet wird, kann leicht kontrolliert werden, dass keinerlei VBA-Code enthalten ist. Wir liefern dem Empfänger nun getrennt die Excel- und die Textdatei.
Import des Codes
Natürlich lässt es sich mit mehr oder weniger Worten erklären, wie eine Textdatei, welche wirklich nur aus dem von uns geschriebenen Code besteht, an die richtige Stelle eingefügt wird. Eine exportierte Sub (*.cls), Function (*.bas) oder UserForm (*.frm) wird automatisch an die richtige Stelle geschrieben, wenn Sie per AltF11 den Code-Editor öffnen, die Zeile mit dem Projektnamen markieren, Rechtsklick und auf Datei importieren… Klicken:
Wählen Sie die zu importierende Code-Datei aus und diese wird automatisch an jene Stelle geschrieben, von wo aus sie exportiert worden ist. Verfahren Sie mit eventuellen weiteren zu importierenden Files gleichermaßen.
Noch ein ergänzender Hinweis: In manchen Foren sind nur bestimmte Dateinamenerweiterungen erlaubt. Und meist gehören *.cls und *.bas nicht dazu. Wenn Sie in einem solchen Forum derartige Dateien hochladen wollen, dann schlage ich vor, einfach eine „erlaubte” Erweiterung anzuhängen. Die Datei würde dann beispielsweise so umbenannt werden: DieseArbeitsmappe.cls.txt oder MeinModul.bas.txt denn *.txt ist meistens erlaubt. Und wir Helfer wissen durchaus damit umzugehen, weil solch eine Umbenennung von Dateien immer wieder einmal erforderlich ist. Eine Alternative ist natürlich auch. das Ganze in eine *.zip zu packen, der Dateityp wird mit höchster Wahrscheinlichkeit auch von allen Foren als Anhang akzeptiert.
Rückmeldungen / Feedback gerne per Mail an mich (G.Mumme@Excel-ist-sexy.de)
Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?
Dann würde ich mich über einen Beitrag Ihrerseits z.B. 1,00 € freuen … (← Klick mich!)