Telefonszámunk: 1-472-0679

Jogosultságok kezelése

Kezdőlap Fórumok Excel témák Jogosultságok kezelése

Ennek a témakörnek tartalma 7 hozzászólás, 2 résztvevő. Utolsó frissítés:  delila 7 hónapja, 4 hete telt el.

8 bejegyzés megtekintése - 1-8 / 8
  • Szerző
    Bejegyzés
  • #5809

    Né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?

    #5810

    delila
    Felhasználó

    Szia!

    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.

    #5811

    delila
    Felhasználó

    Kiegé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
    #5812

    Névtelen

    Köszönöm, ilyesmire gondoltam. Ha több lapot is szeretnék megnyitni felhasználónként?

    #5813

    Névtelen

    Nem 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?

    #5814

    delila
    Felhasználó

    A 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
    #5815

    Névtelen

    Köszönöm a segítséged!

    #5816

    delila
    Felhasználó

    Szívesen.
    Írj a másik fórumra, mielőtt kitépik egymás haját! 😀

8 bejegyzés megtekintése - 1-8 / 8

Be kell jelentkezni a hozzászóláshoz.