Kezdőlap › Fórumok › Excel témák › Jogosultságok kezelése
- This topic has 7 hozzászólás, 2 résztvevő, and was last updated 5 years, 5 months telt el by delila.
-
SzerzőBejegyzés
-
2019-04-15-11:53 #5809Névtelen
Sziasztok!
Olyan problémára szeretnék megoldást találni, hogy 1 Excel munkafüzetben elég sokan dolgoznak egyszerre és minden felhasználónak egyedi jogosultsági kört szeretnék rendelni.
Gyakorlatilag arról lenne szó, hogy van 1 raktár aminek van 1 eszközkészlete és innen lehetne kölcsönözni terméketet. Ha valaki kölcsönöz valamit, ebben a fájlban létrejön 1 újabb munkalap, feltölti a kölcsönzött termékkel és majd én beállítok hozzá 1 jogosoltságot(jelszóval védek, csak az illetékes férhet hozzá).
Tovább bonyolítja a helyzetet, hogy úgy szeretném megoldani ezt az egész dolgot, hogy pl: „X” személy csakis azokat a munkalapokat láthatja amikre engedélyt kapott. Magyarul „X” nem látja „Y” által kölcsönzött termékeinek munkafüzetét.
Emellett a kölcsönző személyek a füzetükben csak 1 oszlopot módosíthatnának a többi le lenne „zárva”. Próbáltam lapvédelmet beállítani, de ha azt feloldják ugyan úgy átírhatják a táblázatuk egyes celláit, amit én nem akarok engedélyezni nekik.
Nézegettem neten, hogy lehetne írni 1 login form-ot, de az túlságosan is összetett lenne, főleg, hogy gyakran módosul a kölcsönzők száma.
Hogyan lehetne kivitelezni ezt az egészet minél dinamikusabban, a már meglévő Excel funkciókkal?
2019-04-15-13:08 #5810Szia!
A ThisWorkbook laphoz rendelj egy makrót, ami a füzet behívásakor automatikusan indul. Az első lap állandóan látható, a többiek lapja 2-től kezdődik.
Private Sub Workbook_Open() Dim lap As Integer, jelszo As String For lap = 2 To Sheets.Count 'lapok láthatóságának megszüntetése, védelme Sheets(lap).Protect Password:="SzuperTitkosJelszo" Sheets(lap).Visible = xlSheetVeryHidden Next 'Jelszó bekérése jelszo = Application.InputBox("Kérem a jelszót", "Jelszó bekérése", , , , , , Type:=2) Select Case jelszo 'A jelszóhoz kötött munkalap meghatározása Case "jelszo_1": lap = 2 Case "jelszo_2": lap = 3 Case "jelszo_3": lap = 4 Case "jelszo_4": lap = 5 Case "jelszo_5": lap = 6 Case "jelszo_6": lap = 7 Case "jelszo_7": lap = 8 End Select Sheets(lap).Visible = xlSheetVisible 'adott lap láthatóvá tétele End Sub
Minden lap a „SzuperTitkosJelszo”-val van védve, amit átírhatsz. A Case utasításoknál írd át a jelszo_1-et és társait a valódi belépési jelszavakra. A számukat növelheted.
2019-04-15-13:35 #5811Kiegészítettem a makrót azzal, hogy ha a saját jelszavaddal lépsz be, minden lap látható legyen, és a lapvédelmet is levettem róluk.
Private Sub Workbook_Open() Dim lap As Integer, jelszo As String For lap = 2 To Sheets.Count 'lapok láthatóságának megszüntetése, védelme Sheets(lap).Protect Password:="SzuperTitkosJelszo" Sheets(lap).Visible = xlSheetVeryHidden Next 'Jelszó bekérése jelszo = Application.InputBox("Kérem a jelszót", "Jelszó bekérése", , , , , , Type:=2) 'Saját jelszavad esetén minden lap láthatóvá tétele, zárolás megszüntetése If jelszo = "Saját_jelszavam" Then For lap = 2 To Sheets.Count 'lapok láthatóvá tétele, védelem megszüntetése Sheets(lap).Unprotect Password:="SzuperTitkosJelszo" Sheets(lap).Visible = xlSheetVisible Next Else 'A jelszóhoz kötött munkalap meghatározása Select Case jelszo Case "jelszo_1": lap = 2 Case "jelszo_2": lap = 3 Case "jelszo_3": lap = 4 Case "jelszo_4": lap = 5 Case "jelszo_5": lap = 6 Case "jelszo_6": lap = 7 Case "jelszo_7": lap = 8 End Select Sheets(lap).Visible = xlSheetVisible 'Az adott lap láthatóvá tétele End If End Sub
2019-04-15-13:56 #5812NévtelenKöszönöm, ilyesmire gondoltam. Ha több lapot is szeretnék megnyitni felhasználónként?
2019-04-15-15:50 #5813NévtelenNem láttam a 2. hozzászólásod, csak miután kommenteltem. Abban az esetben, ha 1 „jelszóhoz” több lap is tartozik, hogy tudnám kivitelezni?
2019-04-15-16:46 #5814A makró végét átírtam. A jelszo_1 és jelszó_2 résznél a Select Case utasításban látod, mit kell átírnod.
Az End Sub fölötti sort megszüntettem, mert az egyes Case utasításoknál láthatóvá tettem a lapokat.Else 'A jelszóhoz kötött munkalap meghatározása Select Case jelszo Case "jelszo_1" Sheets(2).Visible = xlSheetVisible Sheets(5).Visible = xlSheetVisible Case "jelszo_2" Sheets(3).Visible = xlSheetVisible Sheets(4).Visible = xlSheetVisible Sheets(6).Visible = xlSheetVisible Case "jelszo_3": lap = 4 Case "jelszo_4": lap = 5 Case "jelszo_5": lap = 6 Case "jelszo_6": lap = 7 Case "jelszo_7": lap = 8 End Select End If End Sub
2019-04-16-14:59 #5815NévtelenKöszönöm a segítséged!
2019-04-16-16:27 #5816Szívesen.
Írj a másik fórumra, mielőtt kitépik egymás haját! 😀 -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.