Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Gruppierung unter Blattschutz trotzdem öffnen
#1
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
Antworten Top
#2
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
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • MatthiaS04
Antworten Top
#3
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
Antworten Top
#4
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:
  • MatthiaS04
Antworten Top
#5
Hallo Sabrina.

Ich erhalte eine Fehlermeldung " Fehler beim Kompilieren: For ohne Next"

Was ist damit gemeint?

MfG
Matze
Antworten Top
#6
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:
  • MatthiaS04
Antworten Top
#7
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
Antworten Top
#8
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
Antworten Top
#9
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
Antworten Top
#10
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:
  • MatthiaS04
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste