VBA Passwort über ein VBA-Makro automatisch aufheben

In diesem Beitrag erfahren Sie, wie per VBA-Makro ein mit Passwort gesichertes VBA-Makro automatisch entsperrt werden kann. Es geht nicht darum, den VBA-Schutz zu haken. Bei der vorgestellten Methode benötigen Sie das korrekte VBA Passwort.

Ziel der vorgestellten Lösung ist es, den VBA-Schutz über ein VBA-Makro automatisch zu entfernen um beispielsweise den vorhandenen Code der geschützen Arbeitsmappe automatisch per VBE-Programmierung verändern und updaten zu können. In der Praxis kommt es immer wieder vor, dass an ausgelieferten VBA-Programmen, die von einer Vielzahl von Anwendern eingesetzt werden, nachträglich kleinere Veränderungen vorgenommen werden müssen. Um nicht das komplette Excel-Programm, welches unter Umständen auch bereits erfasste Daten enthält komplett (einschl. der Daten) austauschen zu müssen, können die Änderungen am VBA-Code über die sogenannte VBE-Programmierung automatisiert durchgeführt werden.

Unter VBE-Programmierung versteht man das Verändern von VBA-Code durch VBA-Makros. Das bedeutet, das VBA-Code durch VBA-Code verändert wird. Mit dieser Vorgehensweise lassen sich Software-Updates relativ leicht durchführen, allerdings nur, wenn der VBA-Code nicht mit einem Passwort geschützt ist. Genau an dieser Stelle beginnt aber in der Regel die Problematik mit Updates von VBA-Programmen. In der Regel ist der VBA-Code mit einem Passwort versehen, damit keine Änderungen (absichtlich oder unabsichtlich) am Code vorgenommen werden können.

Um nun per VBE-Programmierung den Code zu ändern, muss zunächst das VBA-Passwort aufgehoben werden. Aus Sicherheitsgründen stellt Microsoft aber dafür keine Standard-Methode zur Verfügung. Das nachfolgende vorgestellte Verfahren verwendet die Anweisung SenkKeys, um das Passwort an den VBA-Editor zu übergeben um damit den Passwortschutz aufzuheben.

So funktioinert´s:

Als Ausgangsdatei liegt das Excel-Dokument Proggi.xls vor. Diese Excel-Datei ist mit einem Passwort, im Beispiel mit dem Passwort "pwd123" geschützt und enthält VBA-Code, der geändert werden soll.

Bei der Excel-Datei Update-Tool.xls handelt es sich um das Programm, welches die Datei Proggi.xls updaten, also mit neuem VBA-Code versehen soll.

Damit das updaten von VBA-Code in einer geschützten Excel-Datei funktionieren kann, muss in dieser Datei bereits eine Vorkehrung getroffen werden. Es ist erforderlich, dass der folgende VBA-Code in der geschützten Datei "Progi.xls" bereits vorhanden ist:

Sub VBAaufheben() 'VBA-Kennwort aufheben
   SendKeys "%{F11}%xi{TAB 9}" & "pwd123" & "{tab}{enter 2}%q"
End Sub

Dieser sorgt dafür, dass per SendKeys das bekannte VBA-Passwort aufgehoben werden kann.

Der nachfolgende Code befindet sich in der Datei Update-Tool.xls. Mit diesem Code wird die Prozedur Sub VBAaufheben() in der geschützten Datei Proggi.xls ausgeführt, welche den VBA-Schutz entsprechend aufhebt.

Sub pwd_aufheben()
Workbooks("Proggi.xls").Activate
Application.Run "Proggi.xls!VBAaufheben"
End Sub

Damit das Passwor t in der Datei Proggi.xls aufgehoben werden kann, müssen zwei Voraussetzungen erfüllt sein:

  1. Das geschützte Programm "Proggi.xls" sowie das Update-Programm "Update-Tool.xls" müssen beide in Excel geöffnet sein.
  2. Der VBA-Editor muss geschlossen sein, er darf nicht im Hintergrund offen sein.

Wenn nun in der Datei Update-Tool.xls die Prozedur pwd_aufheben() ausgeführt wird, wird das Passwort in der Datei "Proggi.xls" aufhehoben und die Bearbeitung des VBA-Code per VBE-Programmierung kann durchgeführt werden.

Nachdem die Datei Proggi.xls upgedatet wurde, genügt es das Programm per VBA zu speichern und zu schließen. Beim nächsten Aufruf ist das VBA-Passwort wieder aktiv und der geänderte VBA-Code ist nach wie vor sicher.

Die beiden Beispielprogramme können über die nachfolgenden Links heruntergeladen werden.