23.09.2021, 01:15
Hi Leute,
ich kann zwar ein wenig VBA (selbst beigebracht), aber was Netzwerkstrukturen angeht, bin ich überfragt. Ich habe das Kürzel eines Mitarbeiters aus dem ActiveDirectory. Nun möchte ich automatisiert in der nebenstehenden Zelle seine/ihre E-Mailadresse auslesen. Ich habe im Internet bereits einige Code-Schnipsel gefunden, kann sie allerdings nicht so anpassen, dass sie auf meinen Anwendungsfall passen. Vielleicht hat ja jemand eine zündende Idee :)
Der Code liest erfolgreich Namen und E-Mail-Adresse von mir als Benutzer aus. Allerdings suche ich ja andere Benutzer.
Der Code soll Domäne und Name abfragen und dann etwas ausgeben. Allerdings funktioniert das nicht bei mir. Ich habe keine Domäne und auch nicht den Namen, sondern nur das Kürzel welches mit "samaccountname" ausgelesen wird. Soweit war ich zumindest schon.
Danke und Gruß
ich kann zwar ein wenig VBA (selbst beigebracht), aber was Netzwerkstrukturen angeht, bin ich überfragt. Ich habe das Kürzel eines Mitarbeiters aus dem ActiveDirectory. Nun möchte ich automatisiert in der nebenstehenden Zelle seine/ihre E-Mailadresse auslesen. Ich habe im Internet bereits einige Code-Schnipsel gefunden, kann sie allerdings nicht so anpassen, dass sie auf meinen Anwendungsfall passen. Vielleicht hat ja jemand eine zündende Idee :)
Der Code liest erfolgreich Namen und E-Mail-Adresse von mir als Benutzer aus. Allerdings suche ich ja andere Benutzer.
Code:
Sub Test()
Dim oADInfo As Object
Dim sUserName As String
Dim ouser As Object
Dim sMailAdd As String
Dim sName As String
' Auslesen der Daten aus dem Active Directory
Set oADInfo = CreateObject("ADSystemInfo")
sUserName = oADInfo.UserName
Set ouser = GetObject("LDAP://" & sUserName)
' Filterung bestimmter Daten
' cn = der Name, für jedes Objekt gibt es eine Abkürzung
sMailAdd = ouser.mail
sName = ouser.samaccountname
' Einfügen der Daten
Worksheets("Tabelle1").Range("A3").FormulaLocal = sName
Worksheets("Tabelle1").Range("A4").FormulaLocal = sMailAdd
Set ouser = Nothing
Set oADInfo = Nothing
End Sub
Der Code soll Domäne und Name abfragen und dann etwas ausgeben. Allerdings funktioniert das nicht bei mir. Ich habe keine Domäne und auch nicht den Namen, sondern nur das Kürzel welches mit "samaccountname" ausgelesen wird. Soweit war ich zumindest schon.
Code:
Function funcADUserLookup(ad_field, sSearch, sADDomain)
Dim objConn As Object, objCommand As Object, objRS As Object
Dim strSQL As Variant
On Error Resume Next
Set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConn
strSQL = "SELECT " & ad_field & " FROM 'LDAP://" & sADDomain & "' WHERE samaccountname = '" _
_
& _
sSearch & "'"
objCommand.CommandText = strSQL
Set objRS = objCommand.Execute
funcADUserLookup = objRS.Fields(ad_field).Value
Set objConn = Nothing
Set objCommand = Nothing
Set objRS = Nothing
End Function
Sub Test_Ablauf()
Dim oWSHShell As Object
Dim dom As String, sUser As String, sADDomain As String
Dim ouser As String, mail As String
On Error Resume Next
Set oWSHShell = CreateObject("Wscript.Shell")
dom = InputBox("domaene")
sUser = InputBox("user")
sADDomain = dom
ouser = funcADUserLookup("distinguishedName", sUser, sADDomain)
mail = funcADUserLookup("mail", sUser, sADDomain)
If ouser = "" Then
MsgBox sUser & " nicht gefunden!"
Else
MsgBox ouser & vbCrLf & mail & vbCrLf
End If
Set oWSHShell = Nothing
End Sub
Danke und Gruß