AW: Passwort
14.02.2024 12:32:46
Yal
Hallo zusammen,
die Spielerei gefällt mir ;-)
Wie Udo sagt: nicht .Visible = False sondern .Visible = xlVeryHidden
Dann kann man nur per VBA wieder sichtbar machen. Aber herrlich gesagt, ist es trotzdem einen sehr schwachen Schutz.
Darüber hinaus kann man die PW maskieren. Nehmen wir an, 2 Blätter "Protokoll" und "Tabelle2" müssten ausgeblendet und je mit eigenen PW sichtbar gemacht werden:
Const cAktion = "Protokoll;827ccb0eea8a706c4c34a16891f84e7b|Tabelle2;ab56b4d92b40713acc5af89985d4b786"
Private Sub Workbook_Open()
Dim Arr
Dim W
Dim Eingabe
Arr = Split(cAktion, "|")
For Each W In Arr
Worksheets(Split(W, ";")(0)).Visible = xlVeryHidden
Next
Eingabe = MD5Hex(InputBox("Geben Sie eine Password ein:"))
For Each W In Arr
If Eingabe = Split(Arr, ";")(1) Then Worksheets(Split(Arr, ";")(0)).Visible = True
Next
End Sub
zusätzlich wird die Funktion md5hex in einem allg. Modul abzulegen sein:
Public Function MD5Hex(textString As String) As String
Dim enc
Dim Encoder
Dim bytes
Dim outstr As String
Dim Pos
Set Encoder = CreateObject("System.Text.UTF8Encoding")
Set enc = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
bytes = enc.ComputeHash_2(Encoder.GetBytes_4(textString))
For Pos = 1 To LenB(bytes)
outstr = outstr & LCase(Right("0" & Hex(AscB(MidB(bytes, Pos, 1))), 2))
Next
MD5Hex = outstr
End Function
827ccb0eea8a706c4c34a16891f84e7b ist übrigens der md5-Hasch von 12345 ( debug.print md5hex("12345") )und
ab56b4d92b40713acc5af89985d4b786 von abcde .
Ein bischen Vorbereitungsaufwand hat man damit schon.
Sehr schwaher Schutz, weil jeder könnte in der Direkt-Fenster worksheets("Protokoll").Visible = True reintippen und sichtbar ist das Blatt. Ohne PW!
VG
Yal