| | | MDG Engineering Nutzt Xometry, Um Medizinische Geräte Zu Bauen Und Das Globale Wachstum Voranzutreiben, ein Anwenderbericht
|
Autor
|
Thema: Zugriffsrechte für verschiedene User vergeben (14338 mal gelesen)
|
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 22. Dez. 2004 09:25 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe mit Excel einen Urlaubsplaner erstellt. In den Zeilen die Mitarbeiter und in den Spalten die einzelnen Kalendertage. Trage ich in eine Zelle ein „U“ ein wird ein Urlaubstag abgezogen und ich kann am Ende der Tabelle sehen, wieviel Urlaub jeder Mitarbeiter noch hat, das funtioniert alles ganz super. Ich möchte die Datei für jeden auf einem Datenserver zugänglich machen. Jetzt meine Frage bezüglich der Zugriffsrechte. Für alle ist die Tabelle komplett sichtbar, Schreibrechte sollen jedoch für die Mitarbeiter begrenzt werden. D.h Mitarbeiter Meier darf also nur die Zeile von Mitarbeiter Meier ändern, damit dieser nicht versehentlich die geplanten Urlaubstage des Kolegen Müller ändert. Nur der Abteilungsleiter darf bei allen Mitarbeitern Änderungen durchführen. Wir arbeiten mit Windows 2000 und jeder Mitarbeiter ist mit seinem Namen als Benutzer angemeldet. Ich hoffe ihr versteht meine Idee und könnt mir helfen Danke im voraus und Frohes Fest Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fossy Mitglied Dipl.-Ing. Maschinenbau (Kraftfahrzeugtechnik)
Beiträge: 943 Registriert: 07.02.2001 Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie passten auch heute noch. (George Bernard Shaw, ir. Dramatiker, 1856-1950)
|
erstellt am: 22. Dez. 2004 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
hi, ansatz: standartmäßig sind alle zellen gesperrt. beim start der excel-datei wird dann der benutzer abgefragt und die sperre der entsprechende zeile über suchen abgeschaltet. beim beenden wird dann die zeile wieder gesperrt und excel speichert die datei. ------------------ cu fossy meine kleine website Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 22. Dez. 2004 15:38 <-- editieren / zitieren --> Unities abgeben:
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 22. Dez. 2004 19:31 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
Arbeitsmappe Code: Private Sub Workbook_Open() Call rechte End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'hier wird vorm Speichern immer das Arbeitsblatt komplett geschützt Sheets("Mitarbeiter").Protect (["test"]), DrawingObjects:=True, Contents:=True, Scenarios:=True Sheets("Mitarbeiter").Visible = 2 ' voraussetzung es ist nicht das einzige Blatt End Sub
Modul Code:
Declare Function GetUserName Lib "advapi32.dll" _ Alias "GetUserNameA" (ByVal lpBuffer As String, _ nSize As Long) As Long Sub rechte() Dim B As String * 100 Dim L As Long L = 100 GetUserName B, L 'damit das Makro im PW-geschütztem Blatt läuft Sheets("Mitarbeiter").Protect (["test"]), userinterfaceonly:=True 'tharmen ist Chef , eventuell weitere userid dem Chef gleichberechtigen ;-) If Left(B, L - 1) = "tharmen" Or Left(B, L - 1) = "weitereChefuserId" Then Sheets("Mitarbeiter").Visible = 1 'Blatt sichtbar schalten Sheets("Mitarbeiter").Unprotect (["test"]) Else 'hier werden einzelne Bereiche freigeschaltet '- leider nicht gerade schön, ' da man für jeden User eine abfrage machen muss ' mein Wissen reicht zu mehr nicht aus If Left(B, L - 1) = "user2" Then Sheets("Mitarbeiter").Visible = 1 Range("A2:J2").Locked = False 'Zellbereich zum beschreiben freigeben Else If Left(B, L - 1) = "user3" Then Sheets("Mitarbeiter").Visible = 1 Range("A3:J3").Locked = False Else 'für unberechtigte Blatt auf veryhidden setzen Sheets("Mitarbeiter").Visible = 2 End If End If End If End Sub
obiges sollte Unbefugten die Ansicht der Tabelle "Mitarbeiter" komplett unterbinden, Cheffe hat ein ungeschütztes Blatt (weia ;-) ) und für die einzelnen User wird ein Bereich freigeschalten zum schreiben... [Diese Nachricht wurde von Thomas Harmening am 22. Dez. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 06. Jan. 2005 08:09 <-- editieren / zitieren --> Unities abgeben:
Hallo alle und frohes neues, Visual Basic ist nun mal nicht gerade so mein Ding. Ich habe noch etwas an der Datei gearbeitet und dabei Zeilen und Spalten getauscht. Ich habe die Datei mal angehängt. Es soll jeder Mitarbeiter alles sehen können. Mitarbeiter 1 darf über Passwort alles bearbeiten können. Die anderen Mitarbeiter dürfen nur in der jeweiligen Spalte von Zeile 3 bis 369 Einträge machen. Jeder Mitarbeiter ist mit seinem Namen als User angemeldet, arbeite mit Office 2000. Gruß Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 06. Jan. 2005 23:04 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
versuche mal diese angehängte Excelsheet, habe mal versucht das gewünschte einzubauen, die Mitarbeiter 1 - Mitarbeiter 10 sind an die Usderid anzupassen Code: Sub rechte() 'neuer code Dim B As String * 100 Dim L As Long L = 100 GetUserName B, L Dim maanzahl As Integer Dim ma As Variant maanzahl = 11 'mitarbeiteranzahl anpassen ma = Array("Mitarbeiter 1", "D", _ "Mitarbeiter 2", "E", _ "Mitarbeiter 3", "F", _ "Mitarbeiter 4", "G", _ "Mitarbeiter 5", "H", _ "Mitarbeiter 6", "I", _ "Mitarbeiter 7", "J", _ "Mitarbeiter 8", "K", _ "Mitarbeiter 9", "L", _ "Mitarbeiter 10", "M", _ "Thomas", "N") 'MitarbeiterID,Spalte die freigeschaltet werden muss '(würde sich auch noch automatisieren lassen) 'damit das Makro im PW-geschütztem Blatt läuft Sheets("2005").Protect (["test"]), userinterfaceonly:=True 'tharmen ist Chef , eventuell weitere userid dem Chef gleichberechtigen ;-) If Left(B, L - 1) = "chefID" Or Left(B, L - 1) = "weitereChefuserId" Then Sheets("2005").Visible = 1 'Blatt sichtbar schalten Sheets("2005").Unprotect (["test"]) 'Blattschutz weg Sheets("2005").Activate 'Blatt aktiv setzen Else Sheets("2005").Visible = 2 'hier werden einzelne Bereiche freigeschaltet '- leider nicht gerade schön, ' da man für jeden User eine abfrage machen muss ' mein Wissen reicht zu mehr nicht aus For x = 0 To (maanzahl - 1) * 2 Step 2 If Left(B, L - 1) = ma(x) Then 'mitarbeiter X aus ma(array) holen Sheets("2005").Visible = 1 'Blatt sichtbar schalten sp = ma(x + 1) 'spalte aus ma(array) holen sp1 = sp & "3:" & sp & "369" 'zusammenbau des Rangebereich - bsp."D3 369" ' bsp."D3 369" <---würgs , das sollte nicht im Code entstehen ' "D3 : D396" <-- ohne smiley Sheets("2005").Range(sp1).Locked = False 'Zellbereich zum beschreiben freigeben Sheets("2005").Activate 'Blatt aktiv setzen End If Next x End If End Sub 'wennn man nicht will das man mit alt & F11 das Makro sieht 'unter tools, eigenschaften den Schutz einschalten
[Diese Nachricht wurde von Thomas Harmening am 06. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 27. Jan. 2005 10:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, vielen Dank für deine Hilfe, allerdings funzt das ganze noch nicht so richtig. Weder deine Tabelle noch meine mit dem eingefügten Makro sind gesperrt. Wenn es denn nicht geht, würde ich die Mitarbeiter in verschiedene Tabellen aufteilen, und die einzelnen Tabellen sperren, dazu müssten die Tabellen die in mehreren Fenstern geöffnet würden, allerdings synchron mit scrollen. Vielleicht gibt es ja dafür eine Lösung. Ich kenne das von Quatro da konnte man Tabellen entsprechend verbinden. Gruß Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 27. Jan. 2005 17:27 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf_A
hmm, *Arghs* ja, habe es selber nicht mit verschiedenen Userids durchprobiert..... Sheets("2005").Range(sp1).Locked = False kennzeichnet die Zelle als nicht gesperrt und es wird beim Abspeichern die nicht wieder auf true gestellt, dadurch werden alle Zellen je Mitarbeiter der sich einloggt/ändert die Entsprechende Reihe ungesperrt ... habe es geändert Modul kopiert und Sheets("2005").Range(sp1).Locked = true gesetzt beim Abspeichern Cheffid und Vize brauchen diese Behandluing ja nicht, da das Blatt für die ungeschützt ist und nicht wie bei den Usern dem Zellbereich das Häcken entfernt wird, das beim aktiven Blattschutz Gültigkeit bekommt... ZU Beachten: bei den Userid eingaben (Mitarbeiter 1, etc) bei uns macht es einen Unterschied ob die Userid Gross oder kleingeschrieben wurde... gruss Thomas [Diese Nachricht wurde von Thomas Harmening am 27. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|