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!
Urejanje obsegov in pravice
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:
Kot vidite, funkcija preprosto vrne TRUE, če je podan uporabnik član neke skupine v domeni.
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
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Hvala!
Vendar ne razumem, tu gleda samo ali je uporabnik ali ne.
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!
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
LP!
Hvala!
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
Matjaž Prtenjak
Administrator
Uporabnik oz. skupina je iz AD-ja. Tako, da ta koda za skupino iz AD ni uporabna.
Je potrebno verjetno najprej določiti domeno in akupino.
Hvala!
Koda: Izberi vse
Set uporabnik = edRange.Users.Add("matjaz", True)
ActiveSheet.Protect AllowSorting:=True, AllowFiltering:=True
Hvala!
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
Matjaž Prtenjak
Administrator