Blattschutz in Excel

Hallo zusammen,

ich möchte ein Excel-Dokument vor Veränderungen schützen. Dazu gehe ich bisher auf Extras->Schutz->Blatt schützen->hier gebe ich ein Passwort ein (Häkchen vor: „Gesperrte Zellen auswählen“ und „Nicht gesperrte Zellen auswählen“). Das funktioniert auch super.
Jetzt habe ich allerdings ein Dokument mit vielen Arbeitsmappen (Blättern). Hierbei muss ich jedes Blatt einzeln schützen, was sehr aufwändig ist. Gibt es die Möglichkeit, das gesamte Dokument mit allen Blättern durch einmalige Eingabe eines Passwortes zu schützen ?

Excel Version 2002.

Danke und Gruß
Ulli

hi das wird immer wieder gerne gefragt

Sub Protect_All()
Dim i as Integer
For i = 1 to worksheets.count
Worksheets(i).protect password:=„DeinPassword“
Next i
End Sub

Sub UnProtect_All()
Dim i as Integer
For i = 1 to worksheets.count
Worksheets(i).Unprotect password:=„DeinPassword“
Next i
End Sub

cu Micha

Hallo zusammen,

ich möchte ein Excel-Dokument vor Veränderungen schützen. Dazu
gehe ich bisher auf Extras->Schutz->Blatt
schützen->hier gebe ich ein Passwort ein (Häkchen vor:
„Gesperrte Zellen auswählen“ und „Nicht gesperrte Zellen
auswählen“). Das funktioniert auch super.
Jetzt habe ich allerdings ein Dokument mit vielen
Arbeitsmappen (Blättern). Hierbei muss ich jedes Blatt einzeln
schützen, was sehr aufwändig ist. Gibt es die Möglichkeit, das
gesamte Dokument mit allen Blättern durch einmalige Eingabe
eines Passwortes zu schützen ?

Dazu muss ich noch sagen, wenn ich auf Extras->Arbeitsmappe schützen gehe und ein Passwort auswähle, dann kann ich trotzdem noch Werte und Text ist eine Zelle eingeben. Das soll ja nicht so sein (und wird mit der Methode „Blatt schützen“ auch verhindert).

Excel Version 2002.

Danke und Gruß
Ulli

Hallo Micha, die frage habe ich leider nicht gestellt, aber mir gefällt deine Lösung.

Wüsstest du wie es möglich ist, wie folgendes geht zum schützen geht:
Blätter in Arbeitsmappe:

  • Hilfe
  • Einstellungen
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • Datenblatt
  • Zusammenfassung

Wie ist es nun möglich, wenn ich mich auf Tabellenblatt 05 befinde, dass die Tabellenblätter 01, 02, 03, 04 und natürlich 05 gesperrt werden. Natürlich sollte es bei Auswahl Tabellenblatt 12. Alle Blätter (01 - 12) sperren. Kannst du mir weiterhelfen?
Zur Information: Tabellenblatt Hile, Einstellungen, Datenblatt, Zusammenfassung sind sowieso immer gesperrt!

Wäre dir sehr dankbar.
Gruß und schönen Abend,
Sebastian

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

Wie ist es nun möglich, wenn ich mich auf Tabellenblatt 05
befinde, dass die Tabellenblätter 01, 02, 03, 04 und natürlich
05 gesperrt werden. Natürlich sollte es bei Auswahl
Tabellenblatt 12. Alle Blätter (01 - 12) sperren. Kannst du
mir weiterhelfen?
Zur Information: Tabellenblatt Hile, Einstellungen,
Datenblatt, Zusammenfassung sind sowieso immer gesperrt!

Hi Sebastian,
nochmal zu deiner Ausgangsfrage, Datei=Mappe, und jede Mappe bzw Datei hat Blätter.
Micha hat dir aufgezeigt wie du alle Blätter einer Mappe schützen kannst.
Deine obige Aussage ist nicht einfach zu deuten, soll dass heißen, du bist in Blatt3 dann sollen Blatt 1-3 geschützt werden und 5-12 nicht usw.? Oder wie, watt, wo?
Gruß
Reinhard

Morgen Reinhard,

ja du das hast du richtig verstanden. Datei = Mappe, Mappe hat viele Blätter.
Ja wenn ich mich auf Blatt 03 befinde und Button onClick, dann soll Blatt 01 - 03 (03 einschließlich) gesperrt werden. Wenn Blatt 06 ausgewählt ist, soll 01 - 06 gesperrt werden! Wenn Blatt 12 aktiv soll Blatt 01 - 12 gesperrt werden.

Bei den anderen Blättern: Hilfe, Einstellungen, Datenblatt, Zusammenfassung soll nichts geschehen, die sind immer gesperrt. Hoffe ich habe mich nun verständlich ausgedrückt.

Wünsche einen schönen Start in den Tag!

Gruß,
Sebastian

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

hi Sebastian

wenn ich dich richtig verstanden habe und ohne Fehlerbehandlung !

Sub Protect_All()
Dim i As Integer
Dim x As String
For i = 1 To CInt(ActiveSheet.Name)
x = Format(i, „0#“)
Worksheets(x).Protect Password:=„DeinPassword“
Next i
End Sub

entsperren schaffst du alleine ?

cu Micha

Ja wenn ich mich auf Blatt 03 befinde und Button onClick, dann
soll Blatt 01 - 03 (03 einschließlich) gesperrt werden. Wenn
Blatt 06 ausgewählt ist, soll 01 - 06 gesperrt werden! Wenn
Blatt 12 aktiv soll Blatt 01 - 12 gesperrt werden.
Bei den anderen Blättern: Hilfe, Einstellungen, Datenblatt,
Zusammenfassung soll nichts geschehen, die sind immer
gesperrt. Hoffe ich habe mich nun verständlich ausgedrückt.

Hi Sebastian,

in Diese Arbeitsmappe:
Option Explicit

Private Sub Workbook_Open()
Call Sperren(„12“)
Worksheets(„Zusammenfassung“).Activate
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Call Sperren(Sh.Name)
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Call Sperren(„12“)
End Sub

in ein Modul:

Option Explicit

Sub Sperren(Blattname As String)
Dim Namen, N As String
Namen = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
For N = 0 To 11
 Worksheets(Namen(N)).Protect password:="abc"
Next N
For N = 11 To 0 Step -1
 If Blattname = Namen(N) Then Exit For
 Worksheets(Namen(N)).Unprotect password:="abc"
Next N
End Sub

Gruß
Reinhard

Werde das heute probieren einzubauen…habe leider im mom. keine Zeit, werde mich heute wieder bei dir melden.

Gruß,
Sebastian

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

Hallo Micha.

Vielen Dank für dein Skript. Jedoch hätte ich noch eine Frage und zwar:
Zeile x = Format(i, „0#“), was bedeutet das # -> Meine Vermutung: Platzhalter für i? Liege ich da richtig oder falsch?

Gruß,
Sebastian

PS: Bezüglich entsperren.

Entsperren wäre etwas anders. Hier würde ich gerne nur das aktuelle Blatt das ausgewählt ist entsperren, wenn ich mich in z.B. 07 befinde, wird nur 07 entsperrt, die anderen (davor liegenden -> 01, 02, 03 - 06) werden nicht entsperrt.

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

Entsperren wäre etwas anders. Hier würde ich gerne nur das
aktuelle Blatt das ausgewählt ist entsperren, wenn ich mich in
z.B. 07 befinde, wird nur 07 entsperrt, die anderen (davor
liegenden -> 01, 02, 03 - 06) werden nicht entsperrt.

Hi Sebastian,
vor paar Minuten sagtest du noch:

***wenn ich mich auf Blatt 03 befinde und Button onClick, dann soll Blatt 01 - 03 (03 einschließlich) gesperrt werden. Wenn Blatt 06 ausgewählt ist, soll 01 - 06 gesperrt werden!***

Was gilt denn nun?

Und zu dem Format, da kenne ich mich nicht aus, Micha bedeutend besser, ich probiere da immer rum bis mir das Ergebnis passt:

Sub tt()
Dim i
For i = 9 To 11
 MsgBox Format(i, "##")
 MsgBox Format(i, "#0")
 MsgBox Format(i, "0#")
 MsgBox Format(i, "00")
 MsgBox Format(i, "000#00")
 MsgBox Format(i, "###0##")
 MsgBox Format(i, "00@@@00##")
Next i
End Sub

Gruß
Reinhard

Zeile x = Format(i, „0#“), was bedeutet das # -> Meine
Vermutung: Platzhalter für i? Liege ich da richtig oder
falsch?

hi,
ja du liegst richtig
da du angegeben hast, dass deine Tabellebezeichnung immer 2stellig ist
also 01 und das normale Format einer Zahl immer ohne führende null ist, musste dem Dummi Excel eben gesagt werden, dass es die Variable in ein Stringformat mit führender Null bei einstelligen Zahlen umformatieren soll.
Reinhard hat das Problem anders gelöst indem er einfach gleich ein Array mit Strings im richtigen Format gefüllt hat

cu Micha

hi Reinhard,
sperren: alle vorherliegenden
entsperren: nur das aktive
cu Deine Lesehilfe
*grins*

Monokel überreich -)

sperren: alle vorherliegenden
entsperren: nur das aktive
cu Deine Lesehilfe
*grins*

Hallo Micha,
da sieht man mal wieder oder aber auch nicht *grien* den kleinen aber feinen Unterschied zwischen Fielmann und Apollo…

wenn ich mich auf Blatt 03 befinde und Button onClick, dann soll Blatt 01 - 03 (03 einschließlich) gesperrt werden.

cu, deine Lupe *gg

Gruß
Reinhard

Hallo,

klingt interessant. Aber leider kenne ich mich mit VBA (oder wie heißt´s richtig ?) nicht aus ?

Kann mir jemand kurz erklären wie das funktioniert ?

Danke und Gruß
Ulli

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

Hallo Reinhard,

sorry, dass ich mich erst jetzt wieder melde, aber ich hatte einiges zu erledigen und konnte deinen Code vorher nicht testen und ein mein Projekt implementieren.

Habe den Code nun studiert und eingefügt, funktioniert einwandfrei. Vielen Dank.

Wünsche noch einen schönen Tag.

Gruß,
Sebastian

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