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:
- Das geschützte Programm "Proggi.xls" sowie das Update-Programm "Update-Tool.xls" müssen beide in Excel geöffnet sein.
- 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.