Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Modulaktualisierung trotz VBA-Passwortschutz

Modulaktualisierung trotz VBA-Passwortschutz
13.10.2016 08:56:11
Wolfgang
Hallo,
viele meiner Kollegen arbeiten mit einer Excelmappe von mir und es wird langsam aufwendig, nach jeder Modulaktualisierung alle mit der neuen Mappe zu versorgen.
Die Mappe soll also beim Start prüfen, ob es eine Aktualisierung gibt und falls ja, alle Module rausschmeißen und neu importieren.
Das klappt auch wunderbar solange das VBA-Projekt nicht mit einem Passwort geschützt ist. Da ich den ganzen Code aber nicht ungeschützt herausgeben kann, ist das VBA-Projekt mit einem Passwort geschützt.
Sobald ich dann jedoch versuche auf eine Eigenschaft von "ThisWorkbook.VBProject.VBComponents(i)" zuzugreifen, läuft der Code auf einen Fehler.
Die Excelmappe müsste also für den Fall, das ein Update zur Verfügung steht, das VBA-Projekt mit einem Passwort öffnen und dann erst das Update durchführen.
Auch das funktioniert mit folgendem Code einwandfrei:

Private Function LogInVBAProject()
SendKeys ("%{F11}"), True
SendKeys ("%xi" & "Password" & "{ENTER}{ENTER}%{q}"), True
End Function


Auch wenn ich SendKeys nicht mag, ich habe bisher leider keine andere Möglichkeit gefunden.
Das Problem, vor dem ich stehe und das ich bis jetzt nicht gelöst bekommen habe:
Nachdem das Passwort einmal eingegeben worden ist, kommt man auch ohne erneute Eingabe des Passwortes in den VBA-Editor und kann den Code einsehen.
Die Excelmappe muss zuerst einmal geschlossen und neu geöffnet werden, um dass zu verhindern.
Selbst wenn ich den Passwortschutz komplett aufhebe und neu setze, ändert dies an dem Verhalten von Excel nichts. Sobald man einmal das Passwort für das VBA-Projekt eingegeben hat oder den Projektschutz neu setzt, kommt man so lange ohne erneute Eingabe in das VBA-Projekt, bis die Arbeitsmappe einmal geschlossen und neu geöffnet wurde.
Beispielcode für Herausnehmen und Setzen des VBA-Schutzes:

Private Function UnlockVBAProject()
SendKeys ("%{F11}"), True
SendKeys ("%xi" & "Password" " & "{ENTER}" & "{TAB}{RIGHT}{TAB} " & _
"{TAB}" & "{BACKSPACE}{TAB}{BACKSPACE}{TAB}{ENTER}%{q}"), True
End Function
Private Function LockVBAProject()
SendKeys ("%{F11}"), True
SendKeys ("%xi+{TAB}{RIGHT}{TAB}{TAB}" & "Password" & _
"{TAB}" & "Password" & "{TAB}{ENTER}%{q}"), True
End Function


Gibt es eine Möglichkeit, Excel / diese Arbeitsmappe dazu zu zwingen, dass das Passwort bei erneutem Aufruf des VBA-Projektes neu abgefragt wird oder alternativ Module trotz VBA-Passwortschutz gelöscht und neu importiert werden können?
Danke für Eure Ideen und Vorschläge.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modulaktualisierung trotz VBA-Passwortschutz
13.10.2016 10:09:19
mumpel
Hallo!
Keine Chance. Das VBA-Projekt bleibt bis zum Neustart der Datei zugänglich. Und ohen Kennworteingabe kann auch nichts geändert werden. Helfen kann nur das Auslagern des Codes in ein Add-In.
Gruß, René
nur Workaround
13.10.2016 10:10:54
KlausF
Hallo Wolfgang,
kann man die Mappe nach der Aktualisierung nicht einfach speichern und
mit einer entsprechenden Meldung an den User zwangsschliessen?
Gruß
Klaus
AW: nur Workaround
13.10.2016 10:25:36
Wolfgang
Hallo Klaus,
nein, das wäre leider kontraproduktiv weil in der Arbeitsmappe Automatisierungsprozesse existieren und die Mappe diese unter Umständen automatisert und unbeaufsichtigt startet.
Das ginge dann nicht mehr, wenn die Arbeitsmappe sich nach der Aktualisierung schließt und manuell neu gestartet werden muss.
Gruß
Wolfgang
Anzeige
AW: nur Workaround
13.10.2016 10:56:23
mumpel
Solange Automatisierungsprozesse laufen sollte der Code niemals geändert werden. Denn der Austausch von Code unterbricht alle anderen Codes. Daher Code besser austauschen wenn die Datei nicht genutzt wird, also in den Nachtstunden.
AW: nur Workaround
13.10.2016 11:27:21
Luschi
Hallo Wolfgang,
mit diesem Problem habe ich mich seit 1994 (Access 2.0) beschäftigt und bis Windows-XP lief das ganze auch sehr zuverlässig.
Mit Windows Vista wurde der SendKeys-Befehl erheblich entschärft (besonders Alt+F11 - "%{F11}")
Das ließ sich von einer anderen Exceldatei aus mit einer WScript-Routine noch erschlagen:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys("%{F11}")
Mit irgend einem Office-2003-Update war es auch mit der Entsperrung von außen komplizierter geworden, da man per SendKeys erst im Vba-Editor die richtige Arbeitsmappe aktivieren mußte.
Diese Aktivierung wurde mit Excel 2007 oder 2010 auch unterbunden, da jeder Steuerbefehl zur Aktivierung der Mappe mit dem Vba-Kennwort zwar noch funktioniert, aber im Anschluß sofort wieder die Ausgangsmappe mit den Vba-Befehlen aktiviert ist.
Ich kenne nur noch eine funktionierende Methode und die ist hier beschrieben und man mit 2 Beispieldateien :
http://www.excel-inside.de/vba-loesungen/sonstiges/621-vba-passwort-ueber-ein-vba-makro-aufheben.html
Doch leider hat auch DIESE einen großen Haken - man kommt nur bis zum Aufheben des Kennwortes, jede weitere Aktion (und wenn es nur der MsgBox-Befehl mit der Nachricht zur erfolgreichen Entsperrung des Vba-Kennwortes ist) macht die Hütte wieder zu!!! und der Vba-KW-Schutz ist wieder aktiviert.
Ich einige mich deshalb immer mit dem Netzwerkadministrator, der das AddIn per Startscript bei jedem User-Neustart in den jeweiligen Ordner des Users kopiert. Per PuwerShell kann an aber auch es noch so gestallten, daß nur bei erfordernis die AddIn-Datei kopiert wird.
Hier mal die beiden Dateien aus den o.g. Beitrag ein bischen angepaßt:
https://www.herber.de/bbs/user/108751.zip
Anmerkung: Wenn Du eine der 2 Msgbox-Meldungen aktivierst, ist es mit der Herrlichkeit vorbei.
Gruß von Luschi
aus klein-Paris
Anzeige

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige