Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1360to1364
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle Sheets gleichzeitig schützen

Alle Sheets gleichzeitig schützen
12.05.2014 14:57:49
Born
Hallo Forum,
ich möchte gern per VBA alle Sheets gleichzeitig mit einem Blattschutz versehen. Die Nutzer sollen dabei jeweils dieselben Optionen auswhählen können, die auch der integrierte Dialog "xlDialogProtectDocument" bietet, also z.B. "Gesperrte Zellen auswählen" oder "Zellen formatieren".
Der Aufruf des Dialogs xlDialogProtectDocument liefert jedoch nur ein True oder False zurück und setzt ggf. den Schutz f+r das aktive Sheet. Kann ich irgendwie die Optionen vom Nutzer abfragen und anschließend manuell den Schutz durch ActiveSheet.Protect setzen, ohne dass ich den Dialog durch eine UserForm nachbauen muss?
Vielen Dank im voraus,
M. Born

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Sheets gleichzeitig schützen
12.05.2014 15:07:54
yummi
Hallo M.
Du kannst mit

DeinWorksheetks.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
die einzelnen Optionen setzen (true alles erlaubt, false wäre dann das was du willst). Ich hab nur noch nicht verstanden, ob der Benutzer einmal die Einstellung machen soll und du sie dann für alle tabellenblätter übernehmen willst?
Wenn ja einfach eingestellte Werte merken und mit for each durch alle worksheets und den Schutz setzen.
Gruß
yummi

Anzeige
AW: Alle Sheets gleichzeitig schützen
12.05.2014 15:32:19
Born
Hallo yummi,
das ist ja der Weg, den ich zur Zeit gehe. Allerdings soll der Nutzer die einzelnen Einstellungen (z.B. DrawingObjects:=False, Contents:=True) selbst setzen können. Meine Idee war, den Original-Dialog von Excel einzublenden, dort den Nutzer die Häkchen setzen lassen und das PW eingeben lassen. Wenn er dann auf OK klickt, würde ich gern die ganzen Einstellungen auslesen und per Schleife mit Worksheet.Protect alle Sheets schützen. Leider liefert der Dialog nur True oder False zurück. Daher suche ich nach einem anderen Weg, die Einstellungen elegant abzufragen.
Hat jemand eine Idee?

Anzeige
AW: Alle Sheets gleichzeitig schützen
13.05.2014 09:45:38
Nepumuk
Hallo,
du kannst die Liste nicht auslesen.
Das einfachste, du baust den Dialog mit einem Userform nach. So kompliziert ist der ja nicht.
Gruß
Nepumuk

AW: Alle Sheets gleichzeitig schützen
13.05.2014 10:29:30
Born
Hallo Nepomuk,
es ist leider doch etwas komplizierter. Ich arbeite nicht mit VBA direkt, sondern mit .NET. Leider stimmen die in den Microsoft.Office.Interop.Excel benannten Parameter nicht mit denen aus der Excel-VBA-Hilfe überein, so dass ich ein Teil der Parameter mit Try and Error selbst bestimmen muss. Daher wäre mir das Abfragen des Original-Dialogs lieber gewesen.
Aber es wird mir wohl nichts anderes übrigbleiben...

Anzeige
AW: Alle Sheets gleichzeitig schützen
13.05.2014 11:12:56
EtoPHG
Hallo Born,
Natürlich kann das Zeug ausgelesen werden (Testen an einem nicht geschützten Blatt):
Sub ProtectionParams()
Dim bAnswer As Boolean
Dim oP As Object
bAnswer = Application.Dialogs(xlDialogProtectDocument).Show
If bAnswer Then
Set oP = ActiveSheet.Protection
MsgBox "AllowFormattingCells:=" & oP.AllowFormattingCells & vbCrLf & _
"AllowFormattingColumns:=" & oP.AllowFormattingColumns & vbCrLf & _
"AllowFormattingRows:=" & oP.AllowFormattingRows & vbCrLf & _
"AllowInsertingColumns:=" & oP.AllowInsertingColumns & vbCrLf & _
"AllowInsertingRows:=" & oP.AllowInsertingRows & vbCrLf & _
"AllowInsertingHyperlinks" & oP.AllowInsertingHyperlinks & vbCrLf & _
"AllowDeletingColumns:=" & oP.AllowDeletingColumns & vbCrLf & _
"AllowDeletingRows:=" & oP.AllowDeletingRows & vbCrLf & _
"AllowSorting:=" & oP.AllowSorting & vbCrLf & _
"AllowFiltering:=" & oP.AllowFiltering & vbCrLf & _
"AllowUsingPivotTables:=" & oP.AllowUsingPivotTables
End If
ActiveSheet.Unprotect
End Sub
Gruess Hansueli

Anzeige
AW: Alle Sheets gleichzeitig schützen
13.05.2014 11:15:33
Born
Vielen Dank. Das erspart mir einiges an Arbeit.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige