Active Directory Service mit VBA auslesen
Schritt-für-Schritt-Anleitung
Um Informationen aus dem Active Directory Service (ADS) mit Excel VBA auszulesen, folge diesen Schritten:
-
Verweis aktivieren:
- Öffne Excel und gehe zu
Entwicklertools
> Visual Basic
> Extras
> Verweise
.
- Aktiviere den Verweis auf die „Active DS Type Library“.
-
VBA-Code erstellen:
- Öffne ein neues Modul und füge den folgenden Code ein:
Sub GetActiveDirectoryInfo()
Dim objConnection As Object
Dim objCommand As Object
Dim objRecordSet As Object
Dim i As Integer
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = "SELECT sn,givenName,department,telephoneNumber,physicalDeliveryOfficeName," _
& "otherTelephone,facsimileTelephoneNumber,streetAddress,l," _
& "pager,samaccountname FROM 'LDAP://ou=Benutzer,ou=nn," _
& "ou=nnnnn,DC=nnn,DC=nnn,DC=nn' " _
& "WHERE objectCategory='user' and samaccountname='nnn*'"
Set objRecordSet = objCommand.Execute
i = 3
' Excel-Daten ausgeben
With CreateObject("Excel.Application")
.Visible = True
.Workbooks.Add
.Cells(2, 1).Value = "Name"
.Cells(2, 2).Value = "Vorname"
' Füge weitere Spaltenüberschriften hinzu
Do Until objRecordSet.EOF
.Cells(i, 1).Value = objRecordSet.Fields("sn").Value
.Cells(i, 2).Value = objRecordSet.Fields("givenName").Value
' Füge weitere Felder hinzu
i = i + 1
objRecordSet.MoveNext
Loop
End With
objConnection.Close
End Sub
-
Code anpassen:
- Ersetze
ou=nn
und DC=nnn
durch deine spezifischen Active Directory Informationen.
Häufige Fehler und Lösungen
-
Fehler: Objekt erforderlich: 'objConnection'
Stelle sicher, dass die objConnection
-Variable korrekt deklariert und initialisiert ist. Verwende Set objConnection = CreateObject("ADODB.Connection")
.
-
Fehler: Verweis nicht gesetzt
Überprüfe, ob der Verweis auf die „Active DS Type Library“ aktiviert ist.
-
Fehler: Keine Daten zurückgegeben
Stelle sicher, dass die LDAP-Abfrage korrekt ist und dass du die richtigen Berechtigungen hast, um auf das Active Directory zuzugreifen.
Alternative Methoden
Eine Alternative zur Verwendung von VBA ist die Nutzung eines PowerShell-Skripts, das die Daten aus dem Active Directory abruft und in eine CSV-Datei exportiert. Dies kann dann in Excel importiert werden.
Praktische Beispiele
Hier ist ein Beispiel, wie du die Telefonnummer und E-Mail-Adresse eines Benutzers abrufen kannst:
objCommand.CommandText = "SELECT telephoneNumber, mail FROM 'LDAP://ou=Benutzer,ou=nn,ou=nnnnn,DC=nnn,DC=nnn' WHERE objectCategory='user' and samaccountname='nnn*'"
Du kannst die abgerufenen Daten entsprechend in deine Excel-Tabelle einfügen.
Tipps für Profis
- Fehlerbehandlung einfügen: Implementiere
On Error Resume Next
und entsprechende Fehlerausgaben, um die Fehlersuche zu erleichtern.
- Daten filtern: Verwende die
WHERE
-Klausel in deiner LDAP-Abfrage, um nur relevante Daten zu erhalten.
- Performance optimieren: Teste die Abfrage mit einem kleineren Datensatz, bevor du sie auf das gesamte Active Directory anwendest.
FAQ: Häufige Fragen
1. Wie kann ich die Informationen für den aktuell angemeldeten Benutzer abrufen?
Du kannst die Environment.UserName
Funktion in VBA verwenden, um den aktuellen Benutzernamen abzurufen und in der LDAP-Abfrage zu verwenden.
2. Muss ich eine bestimmte Excel-Version verwenden?
Die meisten Funktionen sind in Excel 2010 und höher verfügbar. Stelle sicher, dass dein Excel VBA die Active DS Type Library unterstützt.
3. Was ist ein LDAP-Verweis?
Ein LDAP-Verweis ist eine Verbindung zu einem anderen LDAP-Server oder -Verzeichnis. Du kannst Microsoft LDAP-Verweise verwenden, um deine Abfragen zu optimieren.