Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
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

VBA: Benutzer dürfen Bereiche bearbeiten

VBA: Benutzer dürfen Bereiche bearbeiten
17.02.2021 11:58:34
Jessi
Hallo zusammen,
ich habe für mehrere Personen Arbeitsplaner. Jeder Planer kann von allen Mitarbeitern eingesehen werden, daher sind die ganzen Planer Freigegeben (um Dauer-Blockaden zu vermeiden).
Die Planer selbst haben Massen an Verweisen und Formatierungen im Hintergrund, daher sind die Tabellenblätter mit einem Blattschutz belegt, dessen Passwort nur ich kenne.
In vorgeschriebenen Bereichen haben einzelne Vorgesetzte Schreibrechte (mit Passwort + Befehl "Benutzer dürfen Bereiche bearbeiten" gelöst).
Nun müssen die Vorgesetzten jeden Tag das Passwort eingeben. Eine elegante Lösung wäre, dass ich per VBA die Kennung auslese und entsprechende Rechte vergebe.
Ist es möglich per VBA einfach das Kennwort für "Benutzer dürfen Bereiche bearbeiten" einzugeben? Wenn ich den Makro-Recorder benutze, wirft es nichts aus.
Der einzige Ansatz, den ich derzeit habe:

Sub SchreibenErlauben()
Dim strPasswort As String
Dim k As Integer
strPasswort = "xxx"
For k = 1 To 12
Sheets(k).Select
ActiveSheet.Unprotect (strPasswort)
ActiveSheet.Range("E4:BG26").Locked = False
Next
For k = 1 To 12
Sheets(k).Select
Range("A1").Select
ActiveSheet.Protect Password:=strPasswort
ActiveSheet.EnableSelection = xlNoRestrictions
Next
End Sub

Hier habe ich allerdings das Problem, dass ich auch vor jedem Schließen die Schleife wieder laufen lassen müsste, um die Bereiche zu sperren. Klicke ich dann bei der Frage "wollen Sie speichern?" auf "Nein", bleibt der Bereich offen.
Des Weiteren frisst es doch merklich Zeit, jedes Mal alle Blätter (12 Stück = 12 Monate) zu entsperren, Bereiche freizugeben und die Blätter wieder zu sperren.
Kennt hier jemand eine elegantere Lösung?
Vielen Dank vorab!

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
17.02.2021 17:28:29
onur

If Application.UserName= "Mustermann" Then

AW: VBA: Benutzer dürfen Bereiche bearbeiten
17.02.2021 19:07:02
Jessi
Vielen Dank, aber das Auslesen des Nutzernamens ist nicht mein Problem ...
Sehe grade, ich hab nicht den kompletten Code drin. Den Nutzernamen hab ich schon ausgelesen.
Ich frage mich nur, ob ich die Routine mit entsperren/wieder sperren benötige.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
17.02.2021 19:48:56
onur
Tja, dann bin ich raus.
Sorry, aber für Ratespielchen wegen falscher/nicht vorhandener Informationen habe ich weder Zeit noch Lust.
Ich lasse mal offen.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
17.02.2021 20:18:33
Jessi
Sorry, das war keine Absicht. Kann den Code erst morgen vollständig reinsetzen, weil ich grade keinen Zugriff drauf habe. Dachte meine Frage wäre ausreichend formuliert. Tut mir leid, dass ich Zeit geraubt habe, war nicht meine Absicht!
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 06:24:38
Jessi
Ich hatte den falschen Code kopiert ...
Aktuell sieht er so aus:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Environ("Username") = "User123" Then
Dim strPasswort As String
Dim k As Integer
strPasswort = "xxx"
For k = 1 To 12
Sheets(k).Select
ActiveSheet.Unprotect (strPasswort)
ActiveSheet.Range("E4:BG26").Select
Selection.Locked = True
ActiveSheet.Protect Password:=strPasswort
ActiveSheet.EnableSelection = xlNoRestrictions
Next
End If
End Sub

Kann man diesen Code vermeiden, indem man irgendwie per Makro das Passwort für den freigegebenen Bereich (mittels "Benutzer dürfen Bereiche bearbeiten") eingeben kann, wenn es den richtigen User ausgelesen hat?
Ich möchte mich vorab bedanken und entschuldige mich für die entstandenen Umstände durch mein Versehen.
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 06:38:36
onur
"Kann man diesen Code vermeiden, indem man irgendwie per Makro" ?
Genau das tut das Makro doch. Es gibt kein Passwort für "Benutzer dürfen Bereiche bearbeiten" - nur für das ganze Blatt.
D.h.: bei Workbook_Open alle Zellen sperren und je nach User Bereiche entsperren und bei BeforeClose wieder alle sperren.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 08:15:56
Jessica
Alles klar, vielen Dank.
Schade, das entsperren und wieder sperren frisst doch für den Nutzer merklich Zeit, was ich gern umgangen hätte. Ich hatte gehofft, dass das bei "Benutzer dürfen Bereiche bearbeiten" hinterlegte Passwort irgendwie per Makro angesteuert werden könnte.
Dankeschön!
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 10:01:05
onur
Wir reden wohl aneinander vorbei.
Nicht der User, sondern das Makro soll die Zellen sperren und entsperren und es gibt KEIN Passwort für „Benutzer dürfen Bereiche bearbeiten“ , sondern nur für das BLATT..
Wenn du alle Zellen auf „locked“ setzt, ausser die, die der User bearbeiten darf, und dann den Blattschutz setzt, ist es doch erledigt.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 12:46:39
Jessica
Ja, ich glaube, wir reden wirklich aneinander vorbei. Ich habe im Prinzip zwei Probleme:
a) Ich habe derzeit bei Überprüfen - Benutzer dürfen Bereiche bearbeiten einen Bereich festgelegt, der MIT einem Kennwort versehen ist.
Ich möchte gern per VBA eben dieses Kennwort eintragen lassen (anstatt dass es der Mitarbeiter jedes Mal tun muss). Mehr ist es eigentlich nicht.
Da ich dies nicht geschafft habe, habe ich mir Lösung b ausgedacht. Die genannte Routine, die Blätter entsperrt, den Bereich entsperrt, und die Blätter danach wieder sperrt.
Hier habe ich aber wieder zwei Probleme;
b1) die Routine dauert lang und
b2) für das Schließen des Dokumentes muss ich die Routine wieder laufen lassen, damit der freigegebene Bereich wieder gesperrt wird. Klickt der User bei der Abfrage "wollen Sie speichern?" auf Nein, bleibt der Bereich für alle geöffnet. (Die Speichern-Abfrage unterbinden und automatisch speichern kann ich aber nicht, da ich nicht voraussetzen kann, dass jederzeit tatsächlich gespeichert werden soll.)
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 16:28:33
Yal
Hallo Jessica,
ich würde das Problem anders eingehen, wohl wissend, dass es deine Frage nicht direkt beantwortet.
Was Du da haben möchtest, ist eine Standard-Datenbankfunktion: Rechte vergeben.
Ich würde den Excel als Frontend weiterhin benutzen, aber alle Daten in eine RDB ablegen und die Rechte dort verwalten.
Die Investition in das Einlernen von Datenbank kann sich lohnen: wenig Anfälligkeit, weniger Wartungsarbeit, Mehr Zeit für sinvolle Aufgaben. Und dann deine persönliche Arbeitssicherung, nicht nur bei deinem aktuellen Arbeitsgeber.
VG
Yal
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 17:12:15
Jessi
Hey Yal,
Vielen Dank für deine Nachricht. Mal sehen, ob ich mich da selbst einlesen kann :-)
Danke + Gruß!
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 17:32:38
onur
Man könnte es ja auch mit SAP umsetzen, ist ja auch persönliche Arbeitssicherung, nicht nur beim aktuellen Arbeitsgeber. ;)
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 18:57:11
onur
Du verstehst mich immer noch nicht.
Du brauchst "Überprüfen - Benutzer dürfen Bereiche bearbeiten" GAR NICHT, es geht mit Blatschutz alleine.
Du musst nur ALLE Zellen des Blattes auf LOCKED setzen und je nach Benutzer deren Bereiche auf UNLOCKED..
Fertig.
Das in Workbok_Open:

ActiveSheet.Unprotect ("test")
Cells.Locked = True
If Application.UserName = "oee" Then Range("C1:F1").Locked = False 'Für jeden User ein anderer  _
Bereich
ActiveSheet.Protect ("test")

Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 19:55:53
Jessi
Doch, ich habe durchaus verstanden, dass es sich um zwei verschiedene Lösungsansätze handelt.
Deswegen schrieb ich "da ich Lösung a nicht geschafft habe, habe ich mir Lösung b ausgedacht"
Nur habe ich nach wie vor das Problem, dass keiner der beiden Wege schlussendlich funktioniert.
Danke für deine Hilfe, aber ich bin halt leider immernoch nicht weitergekommen.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 19:58:29
onur
Wenn es stimmt, "dass keiner der beiden Wege schlussendlich funktioniert", dann liegt es aber an deinem Code.
Poste doch mal eine (Beispiels-) Datei.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 20:04:20
Jessi
Kann ich am Montag machen, aber habe den Code schon hier reingestellt und das Problem doch beschrieben:
Die Routine funktioniert, aber ich muss beim Schließen der Datei den freigegebenen Bereich wieder sperren. Und wenn der Nutzer anschließend auf "nicht speichern" geht, bleibt der freigegebene Bereich für den nächsten Nutzer offen ...
Anzeige
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 20:11:44
onur
Hast du denn meinen Code getestet?
Durch die fettgedruckten Zeilen
Cells.Locked = True
If Application.UserName = "oee" Then Range("C1:F1").Locked = False 'Für jeden User ein anderer   _
_
Bereich
ActiveSheet.Protect ("test")

wird beim Starten der Datei der zuletzt freigegebene Bereich wieder gesperrt.
Wenn aber der nächste User am Rechner des ersten Users mit der Datei weiterarbeitet, dann nützt auch der beste Passwortschutz nix.
AW: VBA: Benutzer dürfen Bereiche bearbeiten
18.02.2021 20:20:36
Jessi
Alles klar, dann teste ich es am Montag nochmal, wenn ich wieder bei der Arbeit bin.
Vielen Dank.
Anzeige

28 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige