Telefonszámunk: 1-472-0679

Jogosultságok kezelése

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

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.