© 2005 - 2012 : NoNet - www.excelei.de

Eine Webseite für EXCEL-Freunde mit Beispielen, Tutorials, Downloads etc. von NoNet


PayPal: Spenden

Häufig wird in Foren gefragt, wie man per VBA-Code auf VBA-Komponenten zugreifen kann. Dies ist z.B. erforderlich, um aus kopierten Tabellenblättern oder kompletten Mappen den enthaltenen VBA-Code zu entfernen oder um UserForms dynamisch zu gestalten oder zentral gespeicherte VB-Module zu importieren oder diese zu exportieren. Auch das Erstellen, Ergänzen oder Ändern von Event-Procedures (Ereignis-Prozeduren wie z.B. Private Sub Worksheet_Change() für Aktionen beim Ändern eines Zellwertes etc.) wird häufig benötigt.


Zunächst möchte ich ausdrücklich betonen, dass es nicht möglich ist, per VBA auf ein geschütztes VB-Projekt zuzugreifen !


Diese Möglichkeit hat MS wohl aus Sicherheitsgründen bewusst ausgenommen, d.h. das VB-Projekt muss grundsätzlich entsperrt sein !

Ob ein VB-Projekt geschützt ist, können Sie folgendermaßen überprüfen :

Sub VBProjektSchutz_Pruefen()
    If Workbooks("IrgendEineMappe.xls").VBProject.Protection Then
        MsgBox "VBA-Projekt ist geschützt !"
    Else
        MsgBox "VBA-Projekt ist NICHT geschützt !"
    End If
End Sub


Den VB-Schutz müssen Sie ggf.  zunächst im VB-Editor per » Extras » Eigenschaften von VB-Projekt » Schutz entfernen :

VB Projektschutz aktivieren und deaktivieren


In diesem Fenster müssen Sie dazu die Option „Projekt für Anzeige sperren“ deaktivieren !


Falls Sie den Schutz wieder aktivieren (Option anhaken) bleibt das VB-Projekt zunächst sichtbar. Der Schutz wird erst wieder wirksam, wenn Sie die Datei speichern, schließen und erneut öffnen. Während einer Excel-Sitzung (bzw. solange die Datei geöffnet ist) besteht keine Möglichkeit, den aktivierten Schutz sofort wieder wirksam werden zu lassen.


Alternativen zum Entfernen des VB-Projektschutzes per VBA (per SENDKEYS-Methode), die man zuhauf im Internet und in Excel-Foren findet, sind nicht empfehlenswert, da sie „unkontrolliert“ Tastenkombinationen an Excel senden, deren Auswirkungen nicht vorhersehbar sind : je nach Ausgangspunkt und Konfiguration beim Starten der SENDKEYS-Makros bewirken diese Unterschiedliches, zudem sind diese Tastenkombinationen weder in den regional unterschiedlichen Versionen  (englisch, deutsch, französisch, etc...) noch in den verschiedenen EXCEL-Versionen (Excel 97 / 2000 / 2002 / 2003 / 2007 / 2010)  vereinheitlicht !









Sicherheitseinstellungen („Zugriff auf VB-Projekt vertrauen“) ändern - manuell


Seit der Version Excel XP (2002) oder Excel 2003 wurde der Zugriff auf das VB-Projekt per VBA zusätzlich standardmässig über eine Sicherheitseinstellung gesperrt. Beim Versuch, per VBA auf das VB-Projekt (z.B. auf ein bestimmtes Modul oder auf ein UserForm) zuzugreifen erscheint folgender Hinweis :


Laufzeitfehler ‚1004’ : Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher

Laufzeitfehler ‚1004’ : Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher













 

Dieser Meldung  ist keine Fehlermeldung, sondern nur ein Hinweis darauf, dass der Zugriff auf das VB-Projekt per VBA noch nicht explizit erlaubt wurde. Sie können diese Einstellung  sehr einfach selbst anpassen - diese Änderung ist nur einmalig notwendig und bleibt dauerhaft gespeichert :


Zugriff auf VB-Projekt vertrauen

































 

In Excel 2007 finden Sie diese Einstellungen etwas versteckt unter der » Office-Schaltfläche Optionen Vertrauensstellungscenter :

Excel 2007 : Zugriff auf VB-Projektobjektmodell vertrauen































   

In Excel 2010 befindet sich diese Option hier : Datei ⇨ Excel-Optionen ⇨ Sicherheitscenter ⇨ Einstellungen Sicherheitscenter ⇨ Makros

 

Excel 2010 Sicherheitscenter : Zugriff auf VBA-Projektmodell vertrauen

 

 

 

 

                    

                                        

Sicherheitseinstellungen ändern -  per Registry (Policy / Sicherheitsrichtlinie)


ACHTUNG : Dieser Abschnitt richtet sich an administrative Personen. Die beschriebenen Schritte sollten nur von versierten Profis durchgeführt werden. Ich übernehme keine Verantwortung für die durch diese Schritte verursachten Auswirkungen !!


Die o.g. Einstellung wird beim Schließen von Excel in folgenden Registry-Key geschrieben, falls dies nicht per Policy (Sicherheitsrichtlinie) untersagt ist :


[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security]

"AccessVBOM"=dword:00000000  ’ bzw : "AccessVBOM"=dword:00000001



HINWEIS : Diese Einstellung wird in vielen Firmen zentral per Policies deaktiviert, so dass diese Einstellung entweder nicht geändert oder die Änderung nicht gespeichert werden kann ! Diese Policy-Einstellung wird in der Registry unter folgendem Schlüssel gespeichert, hier kann die Einstellung auch wieder deaktiviert werden (ACHTUNG : Bearbeiten Sie die Registry-Einstellungen nur dann, wenn Sie sich über die Auswirkungen bewusst sind ! Vergewissern Sie sich auch zunächst bei den IT-Verantwortlichen, ob Sie berechtigt sind, diese Sicherheitsrichtlinie zu umgehen ! ) :


Die folgende Registry-Einstellung ignoriert die manuelle Änderung, indem immer wieder ein Standard-Wert gesetzt wird :


[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Office\11.0\Excel\Security]

"AccessVBOM"=dword:00000000


Evtl. können Sie diese Einstellung manuell nicht ändern, da diese Option „ausgegraut“ ist. Auch das wird über eine Policy gesteuert.

Die folgende Registry-Einstellung ermöglicht es, den Wert für „Zugriff auf VB-Projekt vertrauen“ wieder manuell zu verändern (nicht mehr ausgegraut) :


[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\11.0\Excel\Security]

"AccessVBOM"=dword:00000000


Dabei steht der Wert 00000000 jeweils für DEAKTIVIERT und 00000001  für AKTIVIERT !

Der Unterschlüssel   \11.0\ bezieht sich auf Excel 2003 ! Für Excel 2007 ändern Sie diesen Teil bitte in   \12.0\ , für Excel 2010 in   \14.0\  !!


Beachten Sie bitte auch, dass diese Einstellungen beim nächsten Laden der Policies von einem Policy-Server (z.B. bei Anmeldung an eine Windows Server Active Directory) evtl. wieder überschrieben werden !! Die aktuellen Sicherheitsrichtlinien können Sie über die WINDOWS-Eingabeaufforderung gezielt wieder laden, sofern Sie mit dem entsprechenden Server verbunden sind :  


gpupdate /force




Links zum Thema :




(Weiterer Text folgt in naher Zukunft...)

VBA+Makro - Historie

Per VBA auf VBA-Komponenten zugreifen

Sicherheitseinstellungen („Zugriff auf VB-Projekt vertrauen“) ändern - manuell

Sicherheitseinstellungen ändern -  per Registry (Policy / Sicherheitrichtlinie)

Links zum Thema „Zugriff auf VB-Komponenten per VBA“