Active Directory och VBA
I många mallprojekt och makron kan det vara användbart att hämta uppgifter om den inloggade användaren ur Active Directory istället för att låta användaren skriva in uppgifter själv gång på gång. Detta kan båda användas som en ren service eller för att tvinga in rätt uppgifter.
Active Directory (AD) kan också användas för att kontrollera rättigheter, t ex att man är med i en viss säkerhetsgrupp. Du kan då visa olika data för olika användare och vara säker på att rätt person ser rätt sak.
Observera att du måste vara ansluten till en domän för att nedanstående kod ska fungera.
Hämta uppgift ur Active Directory
För att hämta ut uppgifter ur Active Directory om den inloggade användaren behöver vi först skapa ett objekt med koppling till AD. Denna kod gör detta:
Set oAdSys = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & oAdSys.UserName)
Objektet oUser har nu egenskaper för olika uppgifter. Nedan ser du en tabell med uppgifter och vad de hämtar:
Namn
Hämtar
SAMAccountName
Inloggningsnamnet (utan domän)
DisplayName
Visningsnamnet i AD, oftast Förnamn Efternamn
GivenName
Förnamn
SN
Efternamn
CN
Common Name, visar namnet på användaren, gruppen eller datorn
Company
Företagsnamn
L
Stad (egentligen Location, men oftast användas detta för stad)
Department
Avdelning
E-postadress
facsimileTelephoneNumber
Faxnummer
Initials
Initialer
Mobile
Mobiltelefonnummer
StreetAddress
Gatuadress
TelephoneNumber
Telefonnummer
PostalCode
Postnummer
Det finns även fler egenskaper, men jag har här valt att endast ta upp de vanligaste.
För att hämta ut en uppgift ur AD använder du denna kod:
oUser.
T ex:
MsgBox oUser.DisplayName
Du kan också hämta ut uppgifter med metoden Get(egenskapsnamn), t ex:
MsgBox oUser.Get("PostalCode")
Kontrollera gruppmedlemskap
Du kan enkelt kontrollera om den inloggade användaren är medlem i en viss säkerhetsgrupp. Detta är mycket användbart om du vill visa olika data eller göra olika funktioner tillgängliga beroende på vem som är inloggad.
Egenskaper memberOf ger en samling med alla grupper som den inloggade användaren är medlem i. Nedanstående funktion kontrollera om användaren är medlem i en viss grupp:
Public Function IsMember(ByVal strGroup) As Boolean
Dim strCurrent As Variant
Dim oGroup As Object
Dim oAdSys As Object
Dim oUser As Object
Set oAdSys = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & oAdSys.UserName)
For Each strCurrent In oUser.memberOf
Set oGroup = GetObject("LDAP://" & strCurrent)
If UCase(oGroup.CN) = UCase(strGroup) Then
IsMember = True
Exit Function
End If
Next
IsMember = False
End Function
Av: johan
Datum för publicering
- 2006-04-18
Behöver du hjälp med utbildning eller mall-utveckling? Jag hjälper gärna till via min arbets-givare Spider.
Mvh // Johan
Född vid 334.00 PPM