Registriert seit: 02.05.2016
Version(en): 365
Moin, Moin Zusammen,
ich bin neu hier und hoffe Ihr könnt mir helfen. Das Thema ist nicht neu, ich weiß, nur habe ich eine Verkettung von mehreren "Problemen". Ich habe eine Datei mit mehreren Tabellen. Dies habe ich als Vorlage erstellt, damit meine Kollegen diese nutzen und befüllen können. Nun enthält diese unheimlich viele Formeln und Verknüpfungen und deshalb sind die meisten Tabellen mit dem Blattschutz versehen, 2 davon sogar mit Passwort. Nun mein Wunsch. Ich möchte natürlich das alle Tabellen bearbeitet werden können mit Gliederungen, Filtern, Sortieren, Einfügen, Ausblenden, nur nichts löschen. Nun habe ich mir aus Euerm Forum diese VBA Code´s rausgesucht.
Sub Workbook_Open() 'für alle Blätter ohne Passwortschutz Dim ws As Worksheet For Each ws In Worksheets ws.Protect userinterfaceonly:=True ws.EnableAutoFilter = True 'ermöglicht Autofilter ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung Next ws End Sub
Sub Workbook_Open() 'für alle Blätter mit Passwortschutz Dim ws As Worksheet For Each ws In Worksheets ws.Protect userinterfaceonly:=True, Password:="xxxxx" 'Passwort anpassen ws.EnableAutoFilter = True 'ermöglicht Autofilter ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung Next ws End Sub
Leider bekomme ich es nicht hin, das die erlaubten Änderungs- und Bearbeitungsmöglichkeiten beim Blattschutz enthalten bleiben und vor allem die Kombination mit und ohne Passwort. Ich hoffe ich habe mich verständlich ausgedrückt. Hat jemand eine Idee?
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, ich weiß nicht, ob ich Dein Problem richtig verstanden habe, aber Folgendes ist mir aufgefallen: Zitat:Sub Workbook_Open() 'für alle Blätter ohne Passwortschutz ... ... End Sub
Sub Workbook_Open() 'für alle Blätter mit Passwortschutz ... ... End Sub Excel kann nicht zwei gleichnamige Makros verkraften. Hättest Du oben Im Modul "Option Explicit" eingesetzt, Hätte Excel das auch mit einer Fehlermeldung auf "Mehrdeutige Namen" geahndet. Lösung: entweder in ein Makro integrieren oder ein Makro umbenennen.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, hier die Syntax, wie es geht: Code: For Each ws In Worksheets ws.Protect Password:="xxxxx", AllowFiltering:=True, userinterfaceonly:=True 'Passwort anpassen Next ws
Das, was Du zulassen oder ausschließen möchtest, kannst Du am besten aufzeichnen. Dann hast Du die Schlüsselwörter.
Gruß Atilla
Registriert seit: 02.05.2016
Version(en): 365
Moinsen Ihr Zwei,
danke für die Antworten und Tipp´s. Nur ist mein Excellatain schon etwas begrenzt. Sprich alles was mit Makros und VBA´s zu tun hat. Ich kann zwar so etwas reinkopieren und das hat bis dato auch gereicht und ein Makro aufzeichnen, wenn ich mehrere gleich Dateien mit den selben Schritten bearbeiten möchte, schaffe ich auch noch. Aber den VBA so umzugestalten das eben beides geht, sprich bei den Tabellen mit Blattschutz und mit Passwort und bei denen mit Blattschutz aber ohne Passwort, die angeführten Aktionen, das ist mein Problem. Wie vorne beschrieben hatte ich beide Code´s in "Diese Arbeitsmappe" eingegeben, mit dem Resultat einer Fehlermeldung. Gebe ich nur einen davon ein, funktioniert es auch nur bei den entsprechenden Tabellen(mit oder ohne Passwort), aber auch nur die Gliederung und das Filtern, der Rest auch nicht. Ich hoffe ihr könnt mein Problem nun etwas besser verstehen. Danke schon jetzt für Eure Hilfe.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
zeichne den Blattschutz auf und stell den Code hier ein. Das er dann in allen Tabellen arbeiten soll kann schnell drum herum gebaut werden.
Starte den Makrorecorder und ruf' Blattschutz auf. Dort setzt Du Deine Häkchen oder nimmst sie raus.
Dann den aufgezeichneten Code hier einstellen.
Gruß Atilla
Registriert seit: 02.05.2016
Version(en): 365
04.05.2016, 16:26
(Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2016, 16:28 von Veit.)
Moin, Moin Attila,
anbei das Makro
Sub Makro1() ' ' Makro1 Makro ' ' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _ :=True, AllowSorting:=True, AllowFiltering:=True ActiveSheet.EnableSelection = xlNoRestrictions End Sub
Das soll, wie schon beschrieben, auf allen Seiten möglich sein, auch wenn der Blattschutz enthalten ist. Wenn das funktioniert kann ich auch alle Tabellen mit dem "Blattschutz mit Passwort" versehen, dann passt auch der eine VBA, oder?
Danke
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Veit,
wenn Du das Makro etwas erweiterst, kannst Du es über alle Blätter laufen lassen. Zuerst musst DU den Blattschutz raus nehmen und dann mit den neuen Einstellungen setzen. Wenn Du ein Passwort drin hast, musst Du das noch beim deaktivieren einsetzen.
Sub Makro1() ' ' Makro1 Makro ' ' For each blaetter in thisworkbook.sheets blaetter.unprotect blaetter.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _ :=True, AllowSorting:=True, AllowFiltering:=True blaetter.EnableSelection = xlNoRestrictions next End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Veit
Registriert seit: 02.05.2016
Version(en): 365
Moin, Moin André,
ich bin wirr, liegt aber vielleicht auch an dem Wetter. Also ich habe jetzt Dein Makro kopiert und in mein Modul 1 eingefügt. Dann habe ich die entsprechenden Berechtigungen beim Blattschutz vorgegeben und alles gespeichert. Leider funktioniert es nicht. Hat das was mit meinen beiden "Gliederungen und Ein+Ausblenden" zu tun, siehe oben? Oder wo muss ich das Makro eingeben und wie muss ich es danach speichern? Danke für Eure Unterstützung. (und das sogar am Vattertag, Hut ab :).
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Veit, da ich inzwischen Opa bin, ist das mit dem Vatertag nicht ganz so schlimm  Also, das Makro gehört in ein Modul, das ist ok. Die Frage wäre jetzt, was nicht funktioniert. Ich habe jetzt nur gesehen, dass Du am Anfang noch diese Zeile dabei hattest ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung Die müsste bei Bedarf noch dazu, allerdings mit blaetter davor: blaetter.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 02.05.2016
Version(en): 365
Moin, Moin André,
ich habe nun Dein Makro genommen, die eine Zeile dazu gefügt und in das Modul1 kopiert (anbei), nach dem ich bei allen Blättern den Blattschutz raus genommen habe. Danach gespeichert und geschlossen. Die einzelnen Blätter habe ich nicht noch einmal bearbeitet. Nach dem öffnen funktionierte es nicht (was das Makro bewirken sollte) und die 2 Tabellen in denen ich es wollte hatten kein Kennwortblattschutz. Dann habe ich die Datei erneut geöffnet und bei den beiden Blättern das Kennwort und die entsprechenden Aktivitäten vorgegeben und gespeichert.
Nun funktioniert nach wie vor die Gliederung und Filterung in den Blättern ohne Kennwortblattschutz aber alles was Dein Makro bewirken sollte funktioniert nicht. Bei den 2 Blättern mit Kennwortblattschutz funktioniert gar nichts. Dann noch das Problem, das ich beim öffnen der Datei 3x nach dem Kennwort gefragt werde, was ich auch nicht möchte, denn ich muss jedes Mal diese Frage mit Abbrechen beantworten.
In "DieseArbeitsmappe" ist nach wie vor das VBA ohne Blattschutz, s.Anfang der Unterhaltung.
Im Modul2 ist ein weiteres Makro, s. anbei.
Was kann ich nun tun? Alles wegschmeißen?
Gruß Veit
Sub Makro1() ' ' Makro1 Makro ' ' For Each blaetter In ThisWorkbook.Sheets blaetter.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung blaetter.Unprotect blaetter.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _ :=True, AllowSorting:=True, AllowFiltering:=True blaetter.EnableSelection = xlNoRestrictions Next End Sub
Sub BereichLöschen() With Worksheets("ERisk Preise ") .Range(.Cells(4, 3), .Cells(9, 10)).ClearContents .Range(.Cells(11, 3), .Cells(16, 10)).ClearContents .Range(.Cells(18, 3), .Cells(23, 10)).ClearContents .Range(.Cells(25, 3), .Cells(30, 10)).ClearContents .Range(.Cells(32, 3), .Cells(37, 10)).ClearContents .Range(.Cells(39, 3), .Cells(44, 10)).ClearContents .Range(.Cells(46, 3), .Cells(2439, 10)).ClearContents .Range(.Cells(4, 14), .Cells(9, 21)).ClearContents .Range(.Cells(11, 14), .Cells(16, 21)).ClearContents .Range(.Cells(18, 14), .Cells(23, 21)).ClearContents .Range(.Cells(25, 14), .Cells(30, 21)).ClearContents .Range(.Cells(32, 14), .Cells(37, 21)).ClearContents .Range(.Cells(39, 14), .Cells(44, 21)).ClearContents .Range(.Cells(46, 14), .Cells(2438, 21)).ClearContents End With End Sub
|