759 Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (460 Punkte)
Bearbeitet von peters
Hallo zusammen,

ich möchte beim Öffnen meiner Arbeitsmappe prüfen, ob das VBA-Projekt passwortgeschützt ist.

Wie stelle ich das denn an?

Nach einer Möglichkeit per VBA abzufragen, ob ein Arbeitsblatt geschützt ist, suche ich auch noch bei der Gelegenheit...

Gruß

Peter

10 Antworten

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)

Hallo nochmal,

so, die erste Hürde, die Abfrage nach den Tabellenschutz, habe ich selbst geschafft mittels:

Sub Abfrage_Tabellenschutz()
    If Worksheets("Tabelle1").ProtectContents = True Then
        MsgBox "Geschützt!"
    Else
        MsgBox "Nicht geschützt!"
    End If
End Sub

Bleibt nur noch das Problem, wie ich abfrage, ob das VBA-Project mit einem Schutz versehen ist.
Da weiß ich einfach nicht, wie ich das ansprechen soll...

Gruß

Peter

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

prüfen, ob das VBA-Projekt geschützt ist:

Sub Pruefung_Schutz()

If Application.ActiveWorkbook.VBProject.Protection = 0 Then
  MsgBox "Projekt ist nicht geschützt"
 Else
  MsgBox "Projekt ist geschützt"
End If

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo MO,

danke. Kann es sein, dass das nur funktioniert, wenn ich in den Sicherheitseinstellungen von Excel
explizit "Den Zugriff auf das VBA-Projekt vertrauen" angebe?

Ohne das bekomme ich eine 1004er-Meldung.

Gruß

Peter
0 Punkte
Beantwortet von
Hallo Peter

Du könntest eine gekapselte Funktion mit "On Error Resume Next" nutzen!

On Error Resume Next wird dann auf die Funktion begrenzt!

Bei größeren Modulen/Funktionen aber eher fragwürdig ist und nur Chaotic stiftet.

Gruß Michael
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

ja, das funktioniert nur, wenn dem Zugriff auf das VBA-Project vertraut wird (was ja eigentlich logisch ist, denn sonst kein Zugriff). Eine andere Möglichkeit zur Prüfung ist mir nicht bekannt.

Du kannst auch mal hier schauen (auch zur 1004er-Meldung): Link

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Bearbeitet von peters
Hallo Michael,

wie meinst Du das genau?
Kann ich die Info damit bekommen, ob das VBA-Projekt geschützt ist?

Mehr muss ich nicht wissen: "Wurde der Schutz geknackt oder wurde er nicht geknackt?"

Vielleicht gibt es ja auch die Möglichkeit, einen Aufruf á la "Code anzeigen" zu machen und die
folgende Fehlermeldung (Schutz ist nicht geknackt = Anzeigeverweigerung) auszuwerten?
Gruß

Peter
0 Punkte
Beantwortet von
Hallo Peter

Mein Vorschlag funktioniert nicht,ich mach mir nochmal Gedanken darüber!

Gruß Michael
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
@ Michael: Kein Problem, der Wille zählt  :-)

@ MO, hast Du noch eine Idee?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Peter,

wie ich schon geschrieben habe, ist die von mir gepostete Lösung die mir einzig bekannte Möglichkeit, zu prüfen, ob das VBA-Projekt geschützt ist (ich habe auch nichts anderes im Internet gefunden). Und diese Methode setzt voraus, dass der Zugriff auf das VBA-Projekt erlaubt ist.

Einen 100%-igen Schutz wirst du nicht erreichen. Gibst du in eine Suchmaschine deiner Wahl mal den Begriff "Excel vba Schutz des VBA-Projekts" ein, dann wirst du gleich auf einige Anleitungen treffen, wie man diesen Schutz umgehen kann.

Ich wüsste jetzt auch nicht, wie man feststellen kann, ob der Schutz geknackt wurde.

Gruß

M.O.
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hi MO,

ja, ich habe auch nichts entsprechendes gefunden.

Mein Gedankenansatz ist der, bei geknackten VBA-Projekt zumindest ausgewählte Tabellenblätter automatisch zu löschen; dort könnten auch zumindest die eine oder andere Code-Zeile gespeichert sein.

Ich weiß, dass das kein wirklicher Schutz für einen Profi ist, aber es spricht ja nichts dagegen, es zumindest zu erschweren, oder?  ;-)

Einen geknackten Blattschutz kann man ja auch ohne weiteres abfragen und entsprechende Folgeaktionen auslösen.

Gruß

Peter
...