Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Trotz Blattschutz für VBA Code Makro ausführen

Forumthread: Trotz Blattschutz für VBA Code Makro ausführen

Trotz Blattschutz für VBA Code Makro ausführen
25.01.2016 11:20:12
Karin
Guten Tag,
für ein Makro, das nicht von mir erstellt wurde, ist der Vba CODE mit folgendem Code geschützt:
Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Dim WS As Worksheet
For Each WS In ThisWorkbook.Sheets
With WS
.Protect Password:="PASSWORT"
End With
Next
End Sub
Das Problem ist, dass ich mein Makro nicht ausführen konnte, bzw Error 1004 angezeigt wurde. Ich musste den Schutz deshalb rausnehmen,
ebenso den Blattschutz für die Tabelle auf der sich das Makro befindet.
Im Internet habe ich diesen Zusatz gefunden, der trotz Schutz das Makro durchführen soll:
Userinterfaceonly:=True
diesen habe ich im Code folgendermaßen eingefügt
.Protect Password:="PASSWORT, Userinterfaceonly:=True
Nur leider wird das Makro dann nicht ausgeführt.
Freue mich über jede Hilfe!
MFG
Karin

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Den Blattschutz setzt man im Wb_Open-Event! orT
25.01.2016 11:42:18
Karin
Könnten Sie das vlt genauer erläutern?
Wie gesagt - der Code ist nicht von mir, ich kenne die Vorgehensweise nicht genau.
Vielen Dank

Anzeige
Im VBEditor auf das Dokument-KlassenModul ...
25.01.2016 11:50:28
Luc:-?
…von DieseArbeitsmappe gehen und dort oben-links Workbook auswählen, Karin,
dann wird schon der FktsRahmen der EreignisProzedur angelegt (Workbook_Open ist der Standard). Dort dann die Schleife mit dem Setzen des Schutzes inkl UserInterfaceOnly:=True unterbringen.
Die Blätter wdn so bei Öffnen der Mappe vor NutzerÄnderungen geschützt, während Makros ausgeführt wdn können. Macht man das erst zum Schluss, wenn die Mappe geschlossen wdn soll wie zuvor, ist das sinnlos, denn dann sind bereits „alle Messen gesungen“!
Luc :-?

Anzeige
AW: Im VBEditor auf das Dokument-KlassenModul ...
25.01.2016 12:00:07
Karin
Hallo,
genau das habe ich gerade versucht, nur leider funktioniert es trotzdem nicht.
Das Makro mit dem Laufzeitfehler befindet sich in Tab. 1, es ist eine Eingabemaske, die u.a. auch
bei Klick in der Maske Zeilen ausfüllt, die dann in Tab 1 erscheinen sollen.
Das funktioniert wegen den Blattschutz nicht, wenn ich diesen aufhebe geht es.
Dann speicher ich und öffne es erneut, doch mit diesem VBA COde kommt auch automatisch der Blattschutz für Tab1.
Viele Grüße

Anzeige
AW: Im VBEditor auf das Dokument-KlassenModul ...
25.01.2016 12:05:38
Daniel
Hi Karin
das mit dem UserinterfaceOnly ist ein bisschen diffizil, weil sich Excel diese Einstellung nicht dauerhaft merkt, sondern du bei jedem Öffnen der Datei für jedes geschützte Blatt den Blattschutz aufheben und erneut mit dieser Option aktivieren musst.
zielführender ist wahrscheinlich, wenn du im Makrocode selbst den Blattschutz am Anfang des Makros aufhebst und am Ende wieder setzt:
ActiveSheet.Unprotect "Passwort"
hier dein Code
ActiveSheet.Protect "Passwort"

Gruß Daniel

Anzeige
AW: Im VBEditor auf das Dokument-KlassenModul ...
25.01.2016 12:53:24
Karin
Das funktioniert, vielen Dank!
Allerdings ist jetzt der VBA Code komplett sichtbar, obwohl ich anfangs (in open) den Passwortschutz eingefügt habe.
Wie kann ich den kompletten VBA Code passwortgeschützt machen?
VG

AW: Im VBEditor auf das Dokument-KlassenModul ...
25.01.2016 13:08:03
Karin
Hat sich erledigt, danke!
;
Anzeige
Anzeige

Infobox / Tutorial

Trotz Blattschutz VBA Makros ausführen


Schritt-für-Schritt-Anleitung

Um ein Makro trotz aktivem Blattschutz in Excel auszuführen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Navigiere zum Arbeitsmappenmodul: Klicke auf DieseArbeitsmappe im Projekt-Explorer.

  3. Füge den Code zur Blattschutzverwaltung hinzu:

    • Verwende den Workbook_Open-Event, um den Blattschutz beim Öffnen der Datei zu setzen.
    • Füge den UserInterfaceOnly Parameter hinzu. So bleibt der Blattschutz aktiv, während Makros weiterhin ausgeführt werden können.

    Beispiel:

    Private Sub Workbook_Open()
       Dim WS As Worksheet
       For Each WS In ThisWorkbook.Sheets
           WS.Protect Password:="PASSWORT", UserInterfaceOnly:=True
       Next WS
    End Sub
  4. Füge dein Makro hinzu: Platziere dein Makro in einem Modul und stelle sicher, dass du den Blattschutz am Anfang und Ende des Makros aufhebst und wieder setzt.

    Beispiel:

    Sub MeinMakro()
       ActiveSheet.Unprotect "PASSWORT"
       ' Hier dein Makrocode
       ActiveSheet.Protect "PASSWORT"
    End Sub

Häufige Fehler und Lösungen

  • Error 1004 beim Ausführen des Makros: Dieser Fehler tritt häufig auf, wenn der Blattschutz aktiv ist. Stelle sicher, dass der Blattschutz mit ActiveSheet.Unprotect im Makro entfernt wird.
  • Makro wird nicht ausgeführt: Überprüfe, ob du den Blattschutz mit der richtigen Syntax aufhebst und wieder anwendest. Der UserInterfaceOnly-Parameter muss in der Workbook_Open-Prozedur korrekt gesetzt werden.
  • Sichtbarkeit des VBA Codes: Wenn du den Blattschutz für die Arbeitsmappe setzt, wird der VBA-Code sichtbar. Um den Code zu schützen, musst du den VBA-Projektsschutz aktivieren.

Alternative Methoden

  • Blattschutz direkt im Makro aufheben: Anstatt den Blattschutz beim Öffnen der Arbeitsmappe zu setzen, kannst du ihn direkt im Makro aufheben und am Ende wieder aktivieren. Dies hat den Vorteil, dass du mehr Kontrolle über den Schutz hast.

  • Verwendung von UserInterfaceOnly: Denke daran, dass dieser Parameter nur für die aktuelle Sitzung gilt. Du musst ihn also bei jedem Öffnen der Datei erneut setzen.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du den Blattschutz nutzen kannst, um ein Makro sicher auszuführen:

  1. Du hast eine Eingabemaske auf Tabelle1, die durch ein Makro ausgefüllt wird.
  2. Beim Öffnen der Datei wird der Blattschutz gesetzt:
    Private Sub Workbook_Open()
       Worksheets("Tabelle1").Protect Password:="PASSWORT", UserInterfaceOnly:=True
    End Sub
  3. In deinem Makro hebst du den Blattschutz auf:
    Sub EingabeMakro()
       Worksheets("Tabelle1").Unprotect "PASSWORT"
       ' Füge hier deinen Code zur Eingabe hinzu
       Worksheets("Tabelle1").Protect "PASSWORT"
    End Sub

Tipps für Profis

  • Speichere deine Arbeitsmappe regelmäßig: Vor größeren Änderungen an VBA-Codes, um Datenverluste zu vermeiden.
  • Nutze Kommentare im Code: Dies hilft anderen (oder dir selbst), den Code später besser zu verstehen.
  • Teste den Code schrittweise: Führe dein Makro in kleinen Schritten aus, um Fehler schneller zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code passwortgeschützt machen?
Du kannst den VBA-Projekt-Schutz aktivieren, indem du im VBA-Editor mit der rechten Maustaste auf dein Projekt klickst, "Eigenschaften" auswählst und dann ein Passwort vergibst.

2. Funktioniert der UserInterfaceOnly Parameter in allen Excel-Versionen?
Ja, der UserInterfaceOnly Parameter ist in den meisten modernen Excel-Versionen verfügbar, jedoch ist es wichtig, ihn bei jedem Öffnen der Datei neu zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige