Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Blätter schützen





Frage

Hallo, würde mich freuen hier auf Hilfe zu stoßen... ich möchte meine Tabellenblätter vor Bearbeitung schützen! -Der VBA - Code dafür ist mir bekannt.- Kann ich aber meine excel-datei so schützen, dass nicht jeder den VBA-Code sehen kann? Nur der ihn sehen/ändern kann der das PW kennt? Dann würde ich gerne das Aufrufen eines Tabellenblattes mit einem PW versehen. Dh. Sheet(20) soll nur mit eingabe eines PW sichtbar sein. ist dies alles möglich? Gruß und Dank im voraus DaHo

Antwort 1 von DaHo

ok, den VBA-Code vor unbefugten zu schützen habe ich geschafft :-)

Wie ist es eig wenn jm Makros deaktiviert hat, kann er dann geschützte/ausgeblendete Tabellenblätter sehen?

wenn ja, wie kann ich dieses auch noch schützen?

Gruß
DaHo

Antwort 2 von coros

Hi DaHo,

wenn Du Deine Tabellenblätter mit

.Visible = xlVeryHidden


ausblendest, kann diese niemand über die Menüleiste "Format => Blatt => Einblenden" oder bei deaktivierten Makros öffnen. Da Du das VBA Projekt auch durch ein PW gesichert hast -auch wenn dieser Schutz mehr als zweifelhaft ist, aber besser als nichts- kann niemand einen Code, z.B.

.Visible = True


der zum Einblenden benötigt wird, eingeben. Du könntest dann noch zum weiteren Schutz ein Worksheets_Activate-Ereignis für die Blätter vergeben, das beim Aktivieren des Blattes ein Passwort abgefragt wird und bei falscher Eingabe das Blatt gleich wieder ausblendet. Als Beispiel mal den Code, der in das VBA Projekt des Blattes mit dem Namen "Tabelle2" einzufügen ist. Der Blattname muss eventuell angepasst werden.

Private Sub Worksheet_Activate()
Dim Passwort
Passwort = InputBox("Bitte Passwort eingeben")
If Passwort = "" Then Sheets("Tabelle2").Visible = xlVeryHidden
End Sub


Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von DaHo

dh auch bei deaktivierten Makros sind xlVeryHidden Tabellenblätter ausgeblendet... das ist doch schon einmal ganz gut!

Zu deinem Private Sub habe ich eine frage...

Es ist doch kein Pw vergeben, dh wenn ich nichts eingebe wird es ausgeblendet und wenn ich irgendetwas eingebe wird es angezeigt.

Muss es nicht lauten if Passwort="mein Passwort" then sheets("Tabelle2").Visible = true
Else Sheets("Tabelle2").Visible = xlVeryHidden

oder so? habe das berits ausprobiert, leider lässt er keine else zu... will immer nen elseif haben und dann muss ich doch eine neue Bedingung angeben, oder?

gibt es eine abfrage die das blatt erst anzeigt nachdem ich das PW richtig eingegeben habe? bei deinem sub wird das blatt ja bereits gezeigt...

ich hoffe du verstehst was ich meine :-)

Danke...

DaHo

Antwort 4 von coros

Hi DaHo,

der Code war nur mal so als Beispiel angeführt. Nachfolgend mal ein Code, der das Passwort abfragt. Stimmt das Passwort, belibt das Blatt angezeigt. Wenn nicht, wird es ausgeblendet. Kopiere den Code in das VBa Projekt des Blattes "Tabelle2" und passe das Passwort "Dein Passwort" an.

Private Sub Worksheet_Activate()
Dim Passwort
Passwort = InputBox("Bitte Passwort eingeben")
If Passwort = "Dein Passwort" Then
Exit Sub
Else
Sheets("Tabelle2").Visible = xlVeryHidden
End If
End Sub


Versuche das mal und melde Dich bei Problemen oder Änderungswünschen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von DaHo

Wenn jetzt nicht das Tabellenblatt2 bei der Angabe angezeigt wird, wäre es genau das was ich suche :-)

Aber schon einmal vielen Dank für die gelieferte Hilfe!

Antwort 6 von coros

Hi DaHo,

sorry, aber Deinen letzten Beitrag verstehe ich nicht. Was meinst Du damit? Wenn Du Dich an dem Namen "Tabelle2" störst, dann ändere doch den Namen gegen den Blattnamen des Blattes, was eingeblendet werden soll (sollte der gleiche Name wie des Blattes sein, in dem Du den VBA Code eingefügt hast.). Beispiel. Du fügst den Code in das VBA Projekt des Blattes "Test" ein, dann lautet der Code

Private Sub Worksheet_Activate() 
Dim Passwort 
Passwort = InputBox("Bitte Passwort eingeben") 
If Passwort = "Dein Passwort" Then 
Exit Sub 
Else 
Sheets("Test").Visible = xlVeryHidden 
End If 
End Sub


Alternativ kann anstelle von

Sheets("Test").Visible = xlVeryHidden 


auch

ActiveSheet.Visible = xlVeryHidden


geschrieben werden.

Sollte damit Deine Frage erledigt sein, dann ist gut. Wenn nicht, dann erklär mal bitte Deinen letzten Beitrag etwas genauer.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von DaHo

Ok, da ist ein kleines Verständigungsproblem.

Das Blatt, auf dem die PWAbfrage eingebunden ist, wird angezeigt wenn man das PW eingibt.
Ist das PW korrekt bleibt das Blatt sichtbar, wenn das PW fals ist, wird es ausgeblendet.

Mein "Wunsch" wäre es, wenn ich in den Tabellenblattreitern unten, dass Blatt mit der Abfrage anklicke, dieses bei der eingabe nicht angezeigt wird, erst nach erfolgreichem LogIn.

Hoffe diese Erläuterung ist deutlicher.

Antwort 8 von coros

Hi DaHo,

das geht nicht. Dann musst Du die Blätter über einen Button anwählbar machen. Sprich Du erstellst einen Button, über den Du das entsprechende Blatt anwählen kannst. Der VBA Code für den Button würde dann z.B. für ein Blatt mit dem Namen "Test" wie folgt aussehen:

Private Sub CommandButton1_Click()
Dim Passwort
Passwort = InputBox("Bitte Passwort eingeben")
If Passwort = "Dein Passwort" Then
With Sheets("Test")
.Visible = True
.Activate
End With
End If
End Sub


Ausblenden lassen kannst Du das Blatt ja z.B. über ein Worksheet_Deactivate-Ereignis, also beim Verlassen des Blattes.

Ich hoffe, es hilft. Wenn nicht, melden

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.