Blattschutz bei mehreren Blättern ändern

Liebe Excelianer,

ich habe einige Excel-Dateien erstellt, mit denen meine KollegInnen arbeiten. Jede Datei hat ca. 15 Tabellenblätter, die alle blattgeschützt sind.
13 dieser Tabellenblätter sind von der Struktur her völlig identisch. In diesen Blättern muss ich nun eine Zeile hinzufügen ( mache ich mittels Gruppierung).
Jetzt habe ich nicht herausbekommen, wie man den Blattschutz en bloc aufhebt; ich muss jedes Blatt öffnen und ihn aufheben und das ist ziemlich umständlich und zeitaufwendig, muss aber ja sein, weil ich sonst nichts ändern und natürlich auch nicht mit der Gruppierung arbeiten kann.

Gibts eine Möglichkeit, den Blattschutz für mehrere Blätter gleichzeitig aufzuheben und anschließend auch wieder einzurichten?

Vielen Dank für eventuelle Antworten.

Freundliche Grüße

Jorge

Mit VBA geht´s so:
Mit VBA ist das kein größerer Akt. Due notwendigen Methoden heißen Protect und Unprotect. Hier ein Beispiel:

Dim ws As Worksheet
For Each ws In ActiveWindow.SelectedSheets
 ws.Unprotect "Passwort"
 ws.Protect "Anderes Passwort"
Next 'ws

Statt der ausgewählten Blätter kannst Du natürlich auch alle nehmen:

Dim ws As Worksheet
For Each ws In Sheets
 ws.Unprotect "Passwort"
 ws.Protect "Anderes Passwort"
Next 'ws

Kristian

Hallo Kristian,

erst mal vielen Dank für deine Antwort.

Nun bin ich nicht grade der Jedi-Meister in VBA und hab in meiner Unwissenheit folgendes probiert:

Unter Projekt-VBAProjekt stehen „Diese Arbeitsmappe“, „Modul1-4“ und die restlichen Tabellen.
Unter „Diese Arbeitsmappe“ habe ich dein „für alle Blätter“ - Makro kopiert:

Dim ws As Worksheet
For Each ws In Sheets
ws.Unprotect " "
ws.Protect " "
Next 'ws

Private Sub Workbook_Open()

End Sub

Da ich kein Password verwende, habe ich gedacht, ich lasse ein Leerzeichen zwischen den Anführungszeichen. Ich habs gespeichert, keine Einwände von Excel 2002.
Aber jetzt weiß ich nicht weiter. War das bisher richtig so? Wenn Ja: was muss ich jetzt machen? Bzw. wie kriege ich die Blätter entschützt und dannn geschützt?
Wenn Nein: wo gehört das Makro hin?

Freundliche Grüße

Jorge

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Unter Projekt-VBAProjekt stehen „Diese Arbeitsmappe“,
„Modul1-4“ und die restlichen Tabellen.

Jupp. Da stehen alle Objekte, die das Dokument umfasst, damit natürlich auch die Tabellen. Die Module sind allerdings reine VBA-Module. Wenn Du da vier von hast, dann liegt das daran, dass Du vermutlich irgendwann schon einmal Makros da hinein aufgenommen hast. Mit einem Doppelklick kannst Du die jeweils aufmachen. Wenn nichts drin ist oder nur Schrott, dann am besten per Rechtsklick ganz löschen die einzelnen Module.

Eins kannst Du allerdings übrig lassen, da kommt dann der neue Code rein.

Unter „Diese Arbeitsmappe“ habe ich dein „für alle Blätter“ -
Makro kopiert:

Dim ws As Worksheet
For Each ws In Sheets
ws.Unprotect " "
ws.Protect " "
Next 'ws

Private Sub Workbook_Open()

End Sub

Hm. Ja, war´n Versuch :wink: (Fast) jegliche Anweisungen müssen in einer Sub oder Function stehen, nicht einfach irgendwo lose. Abgesehen davon würde ich es nicht unter „Arbeitsmappe“ ablegen, sondern in ein separates Modul (in eins von den vieren oder eben in ein neu erstelltes - per Rechtsklick-Hinzufügen). Als dort unter der Arbeitsmappe bitte nochmal alles löschen.

In ein Modul kopierst Du dann folgendes:

Sub BlaetterSchuetzen()

End Sub

Die zweite Zeile kommt von alleine. Dazwischen kommt der Code, der beim Aufruf dieser Prozedur (Sub) ausgeführt werden soll. In diesem Falle sieht es danach also so aus:

Sub BlaetterSchuetzen()
Dim ws As Worksheet
 For Each ws In Sheets
 ws.Protect "Passwort"
 Next 'ws
End Sub

Das „Sheets“ bezieht sich immer das aktive Dokument, also aufpassen, dass auch wirklich das richtige aktiert, sprich sichtbar ist, falls mehrere Dateien geladen sind.

Da Du aber auch entschützen willst, brauchst Du noch so eine Sub:

Sub BlaetterEntschuetzen()
Dim ws As Worksheet
 For Each ws In Sheets
 ws.Unprotect "Passwort"
 Next 'ws
End Sub

Ein Leerzeichen ist übrigens auch ein Passwort. Soll es also keins geben, lass nur die beiden „“ stehen. Vielleicht kann man sie sogar weglassen, das weiß ich nicht. Ich glaube schon.

Starten kannst Du diese beiden Subs nun einfach per Extras/Makro/Makros…-Menü oder, indem Du im VBA-Editor auf F5 drückst, während der Textcursor irgendwo in der gewünschten Prozedur steht.

Da ich kein Password verwende, habe ich gedacht, ich lasse ein Leerzeichen zwischen den Anführungszeichen.

Falsch, siehe oben.

Aber jetzt weiß ich nicht weiter.

Immernoch nicht? Probier mal damit. Es sollte klappen. Als erfahrener VBAler gruselt mich diese simple Lösung zwar ein bisschen, weil man sie u.U. eleganter hinbekommt, aber darum geht es hier nicht - es soll verständlich bleiben und funktionieren :wink:

Kristian

Hallo Jorge,

Da ich kein Password verwende, habe ich gedacht,

sag das doch bitte gleich bei der Anfrage, dann hätte sich Kristian keinen Kopp gemacht für eine Lösung die in die Tonne wandert :frowning:

Ich habe jetzt den Code von Kristian nicht vor Augen, ersetze die entsprechenden Zeilen durch
ActiveSheet.Unprotect
bzw. ActiveSheet.protect

ohne irgendwas mit " "

und ersetze activesheet durch den Objekt-Ausdruck in der Schleife von Kristian.

Melde dich wenn du nicht klarkommst.

Gruß
Reinhard

Ist doch alles Bestens. Ob nun mit oder ohne Passwort, das ist hier doch völlig Banane. Und Du hast bestätigt, dass man es auch ganz weglassen kann.

Das mit „ActiveSheet“ allerdings führt hier in die Irre, weil es nicht um EIN Sheet geht, sondern um alle markierten, und die muss man ja nicht extra aktivieren, vermute ich. Ansonsten kommt halt noch die Zeile

 ws.Activate

hinzu vor dem (Un)Protecten. Aber das nur, falls Excel meckert, dass ein nicht sichtbares Blatt nicht ge-/entschützt werden kann.

Kristian

Hallo Kristian und Reinhard,

kaum zu glauben, aber es hat geklappt - ich habs hingekriegt!!

Vielen Dank!!!

Und an Reinhard - wenn ich als Laie immer wüsste, was an Information wichtig ist und was Geschwafel ist, dann wäre ich um einiges entspannter. Ich les meine Postings immer 3 mal durch, weil ich freundlich um Rat bitten will und mich anstrenge, kurz und knapp und dennoch aussagekräftig zu schreiben. Also auch in diesm Fall: mea culpa.

Vielen Dank mit freundlichen Grüßen

Jorge

Hallo Jorge

Und an Reinhard - wenn ich als Laie immer wüsste, was an
Information wichtig ist und was Geschwafel ist, dann wäre ich
um einiges entspannter. Ich les meine Postings immer 3 mal
durch, weil ich freundlich um Rat bitten will und mich
anstrenge, kurz und knapp und dennoch aussagekräftig zu
schreiben. Also auch in diesm Fall: mea culpa.

Mach dir keine Sorge! Die meist etwas kernige Art gehört zu Reinhard und wir schätzen ihn dennoch sehr , da er uns immer wieder auf wesentliche Punkte hinweist und weil seine Ratschläge meist sehr treffsicher sind!
Erich

hinzu vor dem (Un)Protecten. Aber das nur, falls Excel
meckert, dass ein nicht sichtbares Blatt nicht ge-/entschützt
werden kann.

Hallo Kristian,

jepp, sowas weiß ich auch nie, Excel ist da m.E. unlogisch.

Bei Blättern ist es meist*** egal ob sie versteckt sind oder nicht,
aber hast du vba gesteuert z.B. Listboxen oder Textboxen die du mal sichtbar machst, mal nicht, je nach Ereignis wie Zellenwechsel, so kann Excel bzw. Excelvba bestimmte Dinge nur an sichtbaren Boxen tuen, d.h. man muß sie kurzfristig einblenden, die Änderungen durchführen, wieder ausblenden, finde ich bescheuert.

*** = ich meine zwar 100%ig, aber sicher bin ich mir nicht.

Gruß
Reinhard