Registriert seit: 11.05.2019
Version(en): Office 365
Hallo Community,
ich habe eine sehr große Datei, in der ich jetzt einen Blattschutz aktivieren möchte.
Sobald ich diesen aktiviere, lassen sich jedoch nicht mehr die Gruppierungen öffnen. Daraufhon habe ich mir folgenden VBA gegoogelt.
Sub Workbook_Open()
ActiveSheet.Protect userinterfaceonly:=True, Password:="Passwort"
ActiveSheet.EnableOutlining = True 'für Gliederung
ActiveSheet.EnableAutoFilter = True 'für Autofilter
End Sub
Das Problem ist gelöst, jedoch immer nur auf einem Arbeitsblatt. Ich möchte das jedoch auf mehreren Arbeitsblätter verwenden. Muss ich den Code dann woanders eingeben?
Habe diesen jetzt bei "dieser Arbeitsmappe" hinterlegt.
MfG
Matze
Registriert seit: 03.10.2018
Version(en): 2010 ProPlus / 2016 ProPlus
Hallo,
mach eine Schleife über alle Worksheets ...
Code:
Sub Workbook_Open()
Dim WS as Worksheet
For Each WS in Worksheets
With WS
.Protect userinterfaceonly:=True, Password:="Passwort"
.EnableOutlining = True 'für Gliederung
.EnableAutoFilter = True 'für Autofilter
End With
End Sub
Registriert seit: 11.05.2019
Version(en): Office 365
Hallo Sabrina,
vielen Dank für deine Hilfe. Morgen werde ich dein VBA ausprobieren. Eine Frage habe ich dennoch.
Auf welchen Arbeitsblatt muss ich das eingeben?
In jedem wo es gelten soll oder in "Dieser Arbeitsmappe"?
MfG
Matze
Registriert seit: 19.02.2019
Version(en): 365 Insider
Hallo Matze
Workbook open gehört nur in " Diese Arbeitsmappe"
Gruß
Ivan 16
Folgende(r) 1 Nutzer sagt Danke an Ivan 16 für diesen Beitrag:1 Nutzer sagt Danke an Ivan 16 für diesen Beitrag 28
• MatthiaS04
Registriert seit: 11.05.2019
Version(en): Office 365
Hallo Sabrina.
Ich erhalte eine Fehlermeldung " Fehler beim Kompilieren: For ohne Next"
Was ist damit gemeint?
MfG
Matze
Registriert seit: 28.02.2019
Version(en): 2010
Hallo Matze,
da fehlt einfach nur ein Next
Code:
Sub Workbook_Open()
Dim WS As Worksheet
For Each WS In Worksheets
With WS
.Protect userinterfaceonly:=True, Password:="Passwort"
.EnableOutlining = True 'für Gliederung
.EnableAutoFilter = True 'für Autofilter
End With
Next
End Sub
Damit sollte es gehen
MfG Gimpi
Folgende(r) 1 Nutzer sagt Danke an Gimpi für diesen Beitrag:1 Nutzer sagt Danke an Gimpi für diesen Beitrag 28
• MatthiaS04
Registriert seit: 11.05.2019
Version(en): Office 365
27.05.2019, 08:39
(Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2019, 08:43 von WillWissen.
Bearbeitungsgrund: Codetags
)
Eine Anschlussfrage ergibt sich für mich noch.
Wenn ich nun meinen Blattschutz für alle Arbeitsblätter gleichzeitig aktivieren bzw deaktivieren möchte, gibt es dazu auch ein VBA.
Habe dazu folgendes gefunden.
Code:
Option Explicit
Dim WsTabelle As Worksheet
Private Sub Aufheben()
For Each WsTabelle In Sheets
WsTabelle.Unprotect ("Passwort")
Next WsTabelle
End Sub
Private Sub Schutz()
For Each WsTabelle In Sheets
WsTabelle.Protect ("Passwort")
Next WsTabelle
End Sub
Folgendes Makro habe ich in "Dieser Arbeitsmappe" schon hinterlegt.
Sub Workbook_Open()
Dim WS As Worksheet
For Each WS In Worksheets
With WS
.Protect userinterfaceonly:=True, Password:="Matrix2019"
.EnableOutlining = True 'für Gliederung
.EnableAutoFilter = True 'für Autofilter
End With
Next WS
End Sub
Meine Frage: Wo bzw. wie füge ich den oberen Code in den bestehenden ein, sodass alles funktioniert?
MfG
Matze
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
wieso gleichzeitig aktivieren und deaktivieren?
Code:
Sub Workbook_Open()
Dim WS As Worksheet
For Each WS In Worksheets
With WS
.Protect userinterfaceonly:=True, Password:="Passwort"
.EnableOutlining = True 'f?r Gliederung
.EnableAutoFilter = True 'f?r Autofilter
.Unprotect Password:="Passwort"
End With
Next
End Sub
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 11.05.2019
Version(en): Office 365
Hey,
ja das ist natürlich nicht sinnvoll.
Mein Gedanke war/ist, dass ich durch die Eingabe eines Passwortes zeitgleich alle Arbeitsblätter mit einem Schutz versehen.
Ebenfalls soll es aber auch möglich sein, den Schutz aller Arbeitsblätter wieder aufzuheben, wenn man einamlig das Passwort eingibt.
Bei 15 Arbeitsblätter wäre es sehr aufwendig, dass bei jedem Arbeitsblatt separat zu machen
MfG
Matze
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
meinst Du so?
Code:
Sub prcTabellenschutz()
Dim WS As Worksheet
Dim strPasswort As String
'inputbox f?r die Passwortabfrage
strPasswort = InputBox("Geben Sie ein Passwort ein", "Passwortabfrage")
'falls das Paswort nicht aus einen Leerstring besteht
If strPasswort <> "" Then
'durchlauf alle Tabellenbl?tter
For Each WS In Worksheets
With WS
'Abfrage ob das Tabellenblatt gesch?tzt ist
If Not .ProtectContents Then
'wenn nein, sch?tze das Tabellenblatt
.Protect userinterfaceonly:=True, Password:=strPasswort
.EnableOutlining = True 'f?r Gliederung
.EnableAutoFilter = True 'f?r Autofilter
Else
'wenn ja, entferne den Schutz
.Unprotect Password:=strPasswort
End If
End With
Next
End If
End Sub
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• MatthiaS04