Excel VBA: Passwort prüfen > Makro stoppen

Salute nochmal,

und noch eine Kleinichkeit: Ich möchte mit einem Skript wie diesem /t/excel-blaetter-schuetzen/1928767

Gibt es eine Möglichkeit, einen per Skript erfolgten Entsperrversuch mit falschem Passwort abzufangen, damit man eine eigene Fehlermeldung auswerfen und ggf. andere Skripte starten kann?

Merci encore :o)
-Rob.

Gibt es eine Möglichkeit, einen per Skript erfolgten
Entsperrversuch mit falschem Passwort abzufangen, damit man
eine eigene Fehlermeldung auswerfen und ggf. andere Skripte
starten kann?

Hallo Rob,

Sub Aufheben()
Dim wks As Worksheet, mypwd
On Error GoTo hell
mypwd = Application.InputBox("Passwort eingeben")
For Each wks In ActiveWorkbook.Worksheets
 wks.Unprotect Password:=mypwd
Next wks
hell:
If Err.Number 0 Then
 MsgBox Err.Number & vbCr & Err.Description
 'andere Scripte,Prozeduren...
End If
End Sub

On Error GoTo - klar. Danke :smile:
Hey Reinhard,

prima, hättich auch drauf kommen müssen… Noch eleganter wirds, wenn man gleich nach dem zutreffenden Error-Code reagiert (muß ich noch rausfinden).

Eine kleine Schönheitskorrektur für alle, die das einfach nachmachen möchten:

Sub Aufheben()
Dim wks As Worksheet, mypwd
On Error GoTo hell
mypwd = Application.InputBox(„Passwort eingeben“)
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect Password:=mypwd
Next wks
Exit Sub '◄ Damit die Chose nicht IMMER zur Hölle geht :smile:
hell:
If Err.Number 0 Then
MsgBox Err.Number & vbCr & Err.Description
'andere Scripte,Prozeduren…
End If
End Sub

Vielen Dank und einen juten Wochenanfang wünscht Dir
-Rob.

Hallo Rob,

Noch eleganter
wirds, wenn man gleich nach dem zutreffenden Error-Code
reagiert (muß ich noch rausfinden).

meinst du in etwa so:

Option Explicit

Sub Aufheben()
Dim wks As Worksheet, mypwd
mypwd = Application.InputBox("Passwort eingeben")
On Error GoTo hell
For Each wks In ActiveWorkbook.Worksheets
 On Error Resume Next
 wks.Unprotect Password:=mypwd
 If Err.Number = 1004 And Err.Description Like "Das eingegebene Kennwort\*" Then
 Err.Clear
 MsgBox "Das Passwort: " & mypwd & vbCr & "für das Blatt """ & wks.Name \_
 & """ ist falsch." & vbCr & vbCr & wks.Name & " ist weiterhin geschützt!"
 'andere Scripte,Prozeduren...
 On Error GoTo hell
 ElseIf Err.Number 0 Then
 GoTo hell
 End If
Next wks
Exit Sub '? Damit die Chose nicht IMMER zur Hölle geht :smile:
hell:
MsgBox Err.Number & vbCr & Err.Description
'andere Scripte,Prozeduren...
End Sub

Eine kleine Schönheitskorrektur für alle, die das einfach
nachmachen möchten:


Next wks
Exit Sub '◄ Damit die Chose nicht IMMER zur Hölle geht :smile:
hell:
MsgBox Err.Number & vbCr & Err.Description
'andere Scripte,Prozeduren…
End Sub

Dann brauchste die If-Schleife nicht mehr.

Gruß
Reinhard

1 „Gefällt mir“

Genau.
Salve Reinhard,

meinst du in etwa so:

Option Explicit

Sub Aufheben()
Dim wks As Worksheet, mypwd
mypwd = Application.InputBox(„Passwort eingeben“)
On Error GoTo hell
For Each wks In ActiveWorkbook.Worksheets
On Error Resume Next
wks.Unprotect Password:=mypwd
If Err.Number = 1004 And Err.Description Like „Das eingegebene
Kennwort*“ Then
Err.Clear
MsgBox „Das Passwort: " & mypwd & vbCr & „für das Blatt „““ &
wks.Name _
& „““ ist falsch." & vbCr & vbCr & wks.Name & " ist weiterhin
geschützt!"
'andere Scripte,Prozeduren…
On Error GoTo hell
ElseIf Err.Number 0 Then
GoTo hell
End If
Next wks
Exit Sub '? Damit die Chose nicht IMMER zur Hölle geht :smile:
hell:
MsgBox Err.Number & vbCr & Err.Description
'andere Scripte,Prozeduren…
End Sub

Japp, das schwob mir vor. Daß es für diesen Fehler allerdings keinen eindeutigen Fehlercode gibt, sodaß man auch die Fehlerbeschreibung abfragen muß, ist natürlich schade. Aber dennoch: Sehr elejand ;o)

Den allerverbindlichsten Dank für Deine viele Hilfe
-Rob.