Der Sicherheit wegen: VBA abtrennen

VBA-Code vom Arbeitsblatt trennen / auslagern

Derzeit (Ende Feb­ru­ar 2016) kur­siert ein aus­ge­sprochen unan­genehmer „Tro­jan­er“ (Virus) im Inter­net. MS Word- und auch Excel-Dateien enthal­ten einen VBA-Code, welch­er automa­tisch ges­tartet wird und eine „Ran­somware” (Erpress­er-Soft­ware) aus dem Netz herun­ter­lädt. Danach wer­den die Dat­en der eige­nen Festplatte/n sowie vielfach auch die in der über das Inter­net ver­bun­de­nen Cloud-Spe­ich­er ver­schlüs­selt und somit unles­bar gemacht. Ein Text dieser Erpress­er sagt Ihnen dann, dass Sie gegen eine Zahlung (derzeit ca. 200,00 €) eine Möglichkeit erhal­ten, die ver­schlüs­sel­ten Dat­en zu entsper­ren. Während das FBI vor ca. 1 Monat allen Betrof­fe­nen dazu riet, den geforderten Betrag zu bezahlen, um an die Dat­en zu gelan­gen sieht das BSI (Bun­de­samt für Sicher­heit in der Infor­ma­tion­stech­nolo­gie) das genau anders und rät davon ab, zu bezahlen. Es sei ja nicht sich­er, dass dann auch die Möglichkeit der Freiga­be „geliefert“ wird.

Was aber, wenn Ihnen ein Dien­stleis­ter eine Excel-Datei mit VBA-Code liefern soll? OK, im Nor­mal­fall wer­den Sie Ihren Auf­trag­nehmer ken­nen und ihm ver­trauen. Aber was ist mit Hil­feleis­tun­gen, die Sie vielle­icht in Fach-Foren erhal­ten? Nicht, dass wir einem der Helfer böswilliges Han­deln unter­stellen, aber derzeit ist noch nicht veröf­fentlicht, ob sich solch ein Tro­jan­er vielle­icht irgend­wo auf der Fest­plat­te ein­nis­tet und sich nach getan­er Arbeit (Pro­gram­mierung) in eine *.xlsm oder *.xlsb ein­nis­tet.

Aus Grün­den der Daten­hy­giene gilt ab sofort und ohne Aus­nahme: Unser Vorge­hen wird kün­ftig so sein: Der Code ein­er Datei wird getren­nt als reine Text­datei aus­geliefert. Die Dateien­dung wird *.bas oder *.cls bzw. *.frm sein. Diese Files sind so aufge­baut, dass auch ein ungeübter User den Code und die „reine“ Excel-Datei „ver­heirat­en“ kann. Damit ist gemeint, dass wir Helfer auch erken­nen kön­nen, wo der Code abgelegt wurde; das kann manch­mal entschei­dend bei der Fehler­suche sein. – Nach Vere­in­barung kann es dur­chaus sein, dass wir von uns erstell­ten bzw. kor­rigierten VBA-Code als plain Text liefern.

▲ nach oben …

Export nach *.bas bzw. *.cls oder *.frm

Das VBA-Pro­gramm ist geschrieben, getestet und für gut befun­den wor­den. Wir spe­ich­ern (für die kün­ftige Ver­wen­dung) die Datei ganz nor­mal als *.xlsm oder *.xlsb. Jet­zt wird der Export des Codes ini­ti­iert:

Den Code exportieren

Den Code exportieren

Spe­ich­ern Sie die erzeugte Datei an beliebiger Stelle. Öff­nen Sie diese der Kon­trolle wegen in einem beliebi­gen Text-Edi­tor (nicht Textver­ar­beitung). 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 Text­datei mit ein­er anderen Endung han­delt, kön­nen Sie auch dur­chaus kon­trol­lieren, was da drin steckt. Hier ist es nichts Verdächtiges. In Excel ent­fer­nen wir nun noch allen VBA-Code und spe­ich­ern das File als ganz nor­male *.xlsx. Wenn diese Datei nun beispiel­sweise auf einem anderen Rech­n­er geöffnet wird, kann leicht kon­trol­liert wer­den, dass kein­er­lei VBA-Code enthal­ten ist. Wir liefern dem Empfänger nun getren­nt die Excel- und die Text­datei.

▲ nach oben …

Import des Codes

Natür­lich lässt es sich mit mehr oder weniger Worten erk­lären, wie eine Text­datei, welche wirk­lich nur aus dem von uns geschriebe­nen Code beste­ht, an die richtige Stelle einge­fügt wird. Eine exportierte Sub (*.cls), Func­tion (*.bas) oder User­Form (*.frm) wird automa­tisch an die richtige Stelle geschrieben, wenn Sie per AltF11 den Code-Edi­tor öff­nen, die Zeile mit dem Pro­jek­t­na­men markieren, Recht­sklick und auf Datei importieren… Klick­en:

Import der ausgegliederten Textdatei

Import der aus­gegliederten Text­datei

Wählen Sie die zu importierende Code-Datei aus und diese wird automa­tisch an jene Stelle geschrieben, von wo aus sie exportiert wor­den ist. Ver­fahren Sie mit eventuellen weit­eren zu importieren­den Files gle­icher­maßen.


Noch ein ergänzen­der Hin­weis: In manchen Foren sind nur bes­timmte Dateinamen­er­weiterun­gen erlaubt. Und meist gehören *.cls und *.bas nicht dazu. Wenn Sie in einem solchen Forum der­ar­tige Dateien hochladen wollen, dann schlage ich vor, ein­fach eine „erlaubte” Erweiterung anzuhän­gen. Die Datei würde dann beispiel­sweise so umbe­nan­nt wer­den: DieseArbeitsmappe.cls.txt oder MeinModul.bas.txt denn *.txt ist meis­tens erlaubt. Und wir Helfer wis­sen dur­chaus damit umzuge­hen, weil solch eine Umbe­nen­nung von Dateien immer wieder ein­mal erforder­lich ist. Eine Alter­na­tive ist natür­lich auch. das Ganze in eine *.zip zu pack­en, der Date­ityp wird mit höch­ster Wahrschein­lichkeit auch von allen Foren als Anhang akzep­tiert.

▲ nach oben …

Rück­mel­dun­gen / Feed­back 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 Ihrer­seits z.B. 1,00  freuen … (← Klick mich!)

Dieser Beitrag wurde unter Coding / Programmieren, Verschiedenes abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.