Urejanje obsegov in pravice

Pomoč pri izdelavi makrov
Odgovori
top10
Prispevkov: 16
Pridružen: Po Jan 30, 2006 3:15 pm

Urejanje obsegov in pravice

Odgovor Napisal/-a top10 »

Pozdravljeni,

prosila bi za pomoč pri izdelavi makroja, katerega naloga je, da zaščiti delovni list in omogoči urejanje določenega obsega točno določeni skupini. (AD skupini). Težave se mi pojavijo s pravicami. Kako napisati kodo, da določena skupina iz AD, lahko ureja obseg brez gesla.

Hvala!
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Uporabnika veste zatorej je potrebno samo zapisati kodo, ki pravi, če je uporabnik član skupine X potem list odkleni, sicer ga zakleni.

Edina neznanka je torej funkcija, ki pove ali je nek uporabnik član uporabniške skupine X iz Active Directoria. Funkcijo imate zapisano spodaj:

Koda: Izberi vse

'
' www.matjazev.net
'    marec 2010
'
Function AliJeClan(domena As String, skupina As String, uporabnik As String) As Boolean
  Dim grp As Object
  Dim strPath As String
 
  strPath = "WinNT://" & domena & "/"
  Set grp = GetObject(strPath & skupina & ",group")
  AliJeClan = grp.IsMember(strPath & uporabnik)
End Function
Kot vidite, funkcija preprosto vrne TRUE, če je podan uporabnik član neke skupine v domeni.
lp,
Matjaž Prtenjak
Administrator
top10
Prispevkov: 16
Pridružen: Po Jan 30, 2006 3:15 pm

Odgovor Napisal/-a top10 »

Hvala!

Vendar ne razumem, tu gleda samo ali je uporabnik ali ne.

Koda: Izberi vse

Sub Makro()

    Dim wksOne As Worksheet
    Dim aer As AllowEditRange
    Dim usr As UserAccess
    Set wksOne = Application.ActiveSheet
    
    wksOne.Unprotect

    For Each aer In ActiveSheet.Protection.AllowEditRanges
        aer.Delete
    Next aer

    wksOne.Protection.AllowEditRanges.Add _
        Title:="Vnos", _
        Range:=Range("G2:G101"), _
      
    'Set usr = aer.Users.Add("Janez Novak", True)   
   
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    
End Sub
Rabila bi samo dovolenja oz. pravice, da nekatera skupina lahko ureja določen obseg. V excelu to znam (Pregled --> Dovoli uporabnikom urejanje obcegov --> Nov... --> Dovoljenja), prek kode mi pa nikakor ne uspe...

LP!

Hvala!
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Aha :) Samo to vas muči, jaz pa sem vas razumel, da želite kontrolirati dostop preko Active Directoria direktno iz VBA kode... No to je pa še lažje. Spodaj imate primer:

Koda: Izberi vse

'
'  www.matjazev.net
'    marec 2010
'
Sub PostaviDovoljenja()
  Dim edRange As AllowEditRange
  Dim uporabnik As UserAccess
  
  Set edRange = ActiveSheet.Protection.AllowEditRanges.Add("MojObseg", Range("A1:C50"), "obseg")
  Set uporabnik = edRange.Users.Add("matjaz", True)
  ActiveSheet.Protect AllowSorting:=True, AllowFiltering:=True
End Sub
lp,
Matjaž Prtenjak
Administrator
top10
Prispevkov: 16
Pridružen: Po Jan 30, 2006 3:15 pm

Odgovor Napisal/-a top10 »

Uporabnik oz. skupina je iz AD-ja. Tako, da ta koda za skupino iz AD ni uporabna.

Koda: Izberi vse

Set uporabnik = edRange.Users.Add("matjaz", True) 
  ActiveSheet.Protect AllowSorting:=True, AllowFiltering:=True 
Je potrebno verjetno najprej določiti domeno in akupino.

Hvala!
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Sem čisto pozabil na vas... Ne razumem, kaj vas muči :(. Če gre za domenskega uporabnika mu pač dodate spredaj oznako domene, tako kot je to navada v MS okoljih. Torej:

Koda: Izberi vse

  Set uporabnik = edRange.Users.Add("domena\uporabnik", True)
  Set skupina = edRange.Users.Add("domena\skupina", True)
lp,
Matjaž Prtenjak
Administrator
Odgovori