Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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
Unprotect in Schleife - 2007 vs. 2016
06.03.2018 17:57:53
cH_rI_sI
Hallo liebe Excel-Profis,
ich habe in der Firma eine Datei mit ca. 50 Blättern die alle einen Blattschutz haben - zum Aufheben des Blattschutzes verwende ich u.a. Code:
Sub Unprotect()
Dim objWorksheet As Worksheet
Dim strPassword As String
'strPassword = InputBox("Enter password:", "Password")
strPassword = Password.GetPassword
Application.ScreenUpdating = False
If StrPtr(strPassword) = 0 Then Exit Sub
On Error GoTo Abbruch:
For Each objWorksheet In ThisWorkbook.Worksheets
With objWorksheet
.Unprotect Password:=strPassword
.Protect Password:=strPassword, userInterfaceOnly:=False
.Unprotect Password:=strPassword
End With
Next objWorksheet
ThisWorkbook.Unprotect Password:=strPassword
Exit Sub
Abbruch:
MsgBox "Wrong Password", vbExclamation, "Message"
Application.ScreenUpdating = True
End Sub
Mit Office 2007 dauert die Prozedur nur 1 Sek. - mit 2016 fast 1 Minute!?!
An was liegt das? An meinem Code? Macht man das so oder anders?
Bitte um Eure Hilfe, ich weiß echt nicht mehr weiter...
Lg,
Chrisi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ab Excel 2013 …
06.03.2018 18:19:15
RPP63
… meinte Microsoft, Schwachsinn verzapfen zu müssen.
Glaub mir, die Langsamkeit ist per Design festgelegt.
Auch Haserodt war bereits vor Jahren extrem genervt:
http://www.online-excel.de/excel/singsel.php?f=190
Gruß Ralf
AW: Ab Excel 2013 …
06.03.2018 18:33:51
Yannik
Da ich eine Datenbank für die Arbeit schreibe und die Tabellenblätter allesamt geschützt werden sollen, hatte ich keine Lust bei "Programmierarbeiten" immer wieder einzeln den Schutz aufzuheben.
Hab mir einen Button "Entwicklermodus an" gebastelt der folgendes ausführt:
'Variablen
Dim MeineBlaetter As Worksheet
'Passwörter aufheben (für alle Tabellenblätter)
For Each MeineBlaetter In ThisWorkbook.Worksheets
MeineBlaetter.unprotect Password:="1234"
Next MeineBlaetter
Anzeige
AW: Ab Excel 2013 …
06.03.2018 18:37:19
cH_rI_sI
Danke Yannik, aber ich mache ja das selbe - siehe Code im 1. Post...
AW: Ab Excel 2013 …
06.03.2018 18:36:02
cH_rI_sI
Danke Ralf - jetzt verstehe ich was da abläuft... Blöd ist halt, dass der Support von 2007 ausläuft und die Firma daher auf 2016 umstellen muss...
AW: Warum verwendest du nicht ...
08.03.2018 19:40:27
cH_rI_sI
Hi Luc,
beim Protect mache ich das ja schon:
Sub Protect()
Dim Blatt As Worksheet
Dim PW As String
PW = "test123"
Application.ScreenUpdating = False
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.EnableAutoFilter = True
Blatt.Protect PW, userInterfaceOnly:=True
Next Blatt
Application.ScreenUpdating = True
End Sub 
Wenn ich aber bei dem ein oder anderen Blatt manuell was ändern möchte was nicht jeder darf bringt das ja nichts... Oder verstehe ich komplett Bahnhof?
Bitte kläre mich auf - Danke!
Lg,
Chrisi
Wenn du den Schutz mal manuell aufhebst, ...
08.03.2018 19:59:13
Luc:-?
…Chrisi,
musst du den anschließend wieder per Makro setzen, den manuell hast du die AusnahmeMöglichkeit nicht! Deshalb verwendet man so etwas am besten im Ereignismakro der Mappe Workbook_Open bzw in deinem Fall mindestens für das standardmäßig zuerst geöffnete Blatt und in weiteren Fällen (ggf zusätzlich) bei Worksheet_Activate oder evtl …_Deactivate. Oder aber du beziehst dein vorhandenes Makro nur auf das aktive Blatt und setzt damit den Schutz erneut nach jedem manuellen Aufheben desselben.
Luc :-?
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige