Als erstes möchte ich dir sehr danken dass du mir hilfst weiter zu kommen. Jedoch wenn ich das Skript ausführe ladet es bloss und es passiert rein garnichts.
Ich weiss nicht an was das liegen könnte habe es 1zu1 übernommen und die Einstellung für den Server geändert.
Viele Grüsse
Public Function AllUsers(ByVal strAttr As String) As String()
' ###################################################################
' Hier sind noch einige Attribut-Beispiele
' strAttr = "name" oder strAttr = "cn" Vorname (Bsp: Peter)
' strAttr = "sn" Name (Bsp: Müller)
' strAttr = "samaccountName" Kuerzel (Bsp: hede)
' strAttr = "telephoneNumber" Telefon (Bsp: 0815/123)
' strAttr = "mail" Email (Bsp: asdfg@asdfg.de)
' strAttr = "title" Titel (Bsp: Dr.)
' strAttr = "homeDrive" Home-Verzeichnis (Bsp: H:)
' strAttr = "physicalDeliveryOfficeName" Raumnummer (Bsp: C 120)
' strAttr = "company" Firma (Bsp: Firma GmbH)
' strAttr = "postalCode" PLZ (Bsp: 12345)
' strAttr = "st" Bundesland (Bsp: NRW)
' strAttr = "streetAddress" Strasse (Bsp: Am Wald 9a)
' strAttr = "l" Stadt (Bsp: Köln)
' strAttr = "department" Abteilung (Bsp: IT)
' ###################################################################
Dim conn As New ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Root As IADs
Dim Domain As IADs
Dim strBase As String
Dim strFilter As String
Dim strDomain As String
Dim strDepth As String
Dim strQuery As String
Dim strUser() As String
Dim iElement As Integer
' Fehlerbehandlung aktivieren
On Error GoTo ErrHandler
ReDim strUser(0) As String
' Pfad der gegenwärtigen Domäne (LDAP) einholen
Set Root = GetObject("LDAP://rootDSE")
strDomain = Root.Get("defaultNamingContext")
Set Domain = GetObject("LDAP://" & strDomain)
' LDAP Base DN setzen
strBase = "<" & Domain.ADsPath & ">"
' Filter auf die Kategorie Person und Klasse User setzen
strFilter = "(&(objectCategory=person)(objectClass=user))"
' falls kein Attribut übergeben wurde, wird es auf ein
' beliebiges Standard gesetzt, Bsp: name
If strAttr = "" Then strAttr = "name"
' Suchtiefe setzen
strDepth = "subTree"
' Abfrage zusammen setzen
strQuery = strBase & ";" & strFilter & ";" & strAttr & ";" & strDepth
' Verbindung öffnen
conn.Open "Provider=ADSDSOObject; User Id=*********;Password=*********;"
' Query ausführen
Set Rs = conn.Execute(strQuery)
With Rs
Do While Not .EOF
On Error Resume Next
If strUser(0) = "" Then
iElement = 0
Else
iElement = iElement + 1
End If
' das Array Redimensionieren
ReDim Preserve strUser(iElement) As String
' Das ausgewählte Attribut (hier: "mail"->Funkstionsübergabe)
' in das Array schreiben
strUser(iElement) = Rs.Fields(strAttr)
.MoveNext
Loop
End With
If Rs.State <> 0 Then Rs.Close
If conn.State <> 0 Then conn.Close
ErrExit:
' Das StringArray zurückgeben
AllUsers = strUser
' Objekte schließen und zerstören
On Error Resume Next
Rs.Close
conn.Close
Set Rs = Nothing
Set conn = Nothing
Set Root = Nothing
Set Domain = Nothing
Exit Function
ErrHandler:
Resume ErrExit
End Function
Sub Command1_Click()
Dim strA() As String
Dim i As Long
' Funktionsaufruf mit dem Attribut "mail"
strA = AllUsers("mail")
If Not strA(0) = "" Then
For i = 0 To UBound(strA)
Debug.Print strA(i)
Next
End If
End Sub
|