Benutzer mit den meisten Antworten
Test ob Name in öffentlichem Ordner vorhanden

Frage
-
Hallo,
da ich mit der Internet Suche nicht so recht weiter komme, stelle ich meine Frage mal hier.
Wir nutzen Outlook 2010 mit Exchange und ich habe Listen mit Verweisen auf Kollegen.
Da ich viele der dort aufgeführten Namen nicht kenne, möchte ich prüfen ob die Namen in unseren öffentlichen Adressbüchern eingetragen sind.
Im grunde will ich damit feststellen ob es diese Personen noch in der Firma gibt.
Da ich, außer erstmal das gesamte Adressbuch aufzulisten, keinen Ansatz gefunden habe, die Namen zu prüfen, bitte ich um Tipps und Lösungsansätze.
Vielen Dank im Voraus,
cheapy
Antworten
-
Hiermit bekomme ich die gewünschten Ergebnisse:
Public Function getUsersDN(ByVal strUsername As String) Dim objConnection As Object, objCommand As Object, objRecordSet As Object Dim strDN As String Const ADS_SCOPE_SUBTREE = 2 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 distinguishedName FROM 'LDAP://dc=xxx,DC=com' " & _ "WHERE objectCategory='user' " & _ "AND CN = '" & strUsername & "'" On Error Resume Next Set objRecordSet = objCommand.Execute If Err.Number <> 0 Then MsgBox "Exception occured: " & Err.Description On Error GoTo 0 If objRecordSet.EOF Then getUsersDN = "" Else objRecordSet.MoveFirst Do Until objRecordSet.EOF strDN = objRecordSet.Fields("distinguishedName").Value getUsersDN = strDN objRecordSet.MoveNext Loop End If Set objCommand = Nothing Set objConnection = Nothing End Function
Benötigt noch ein wenig Feinschliff aber ist schon ganz brauchbar.
- Als Antwort markiert Cheaptrick_la Dienstag, 14. Juli 2015 12:26
- Bearbeitet Cheaptrick_la Dienstag, 14. Juli 2015 14:52
Alle Antworten
-
Werter Herr Wille,
ihre erste Antwort werte ich dann einfach mal als Scherz.
Hätte ich die Daten nicht elektronisch vorliegen, dann bräuchte ich die Frage hier wohl kaum zu stellen.
Vielleicht habe ich die Frage aber auch etwas ungeschickt gestellt.
Im Grunde will ich ja die Informationen über unser Outlook (2010) anzapfen. Das bezieht die Daten wiederum aus unserem Exchange.
Zur Version kann ich leider erst am Montag etwas sagen, wenn ich wieder im Büro bin.Gruß
cheapy
-
Ja, sie was als Scherz gemeint, dass "Listen mit Verweisen auf Kollegen" keine bekannte Terminologie in Bezug auf Outlook und Exchange ist.
Es ist schwer zu helfen, wenn die Frage nicht eindeutig formuliert wird.
BTW: Auch die Aussage "Informationen über unserer Outlook anzapfen" könnte man mit Büchern beantworten - wenn die genaue Art der Informationen nicht genannt wird.
Nicht vergessen: Du suchst Hilfe! Mach es den ehrenamtlichen Helfern, die Dir in ihrer Freizeit helfen wollen, einfach, Dir helfen zu können.
Gruesse aus Berlin schickt Robert - MVP Exchange Server
-
Oh, da habe ich dann wohl zu viel voraus gesetzt.
Also ich suche eine Möglichkeit mit VBA z.B. in Access 2010 und dem Verweis auf Outlook (?) mittels eines Namens z.B. dessen Mailadresse auszulesen oder auf einem andren Wege festzustellen, ob der jeweilige Name in unserem Outlook/Exchange noch bekannt ist.
Und bei mehreren Hundert Namen möchte ich das nicht mit einer optomechanischen Schnittstelle lösen.
Gruß
cheapy
-
Moin,
dazu braucht du weder ein Outlook noch den Exchange direkt, was du suchst ist eine simple LDAP-Abfrage.
Allerdings ist natürlich nicht sichergestellt, das die Person auch noch im Unternehmen tätig ist, je nachdem
wie gut HR und IT zusammenarbeiten.Hier zum starten:
https://www.faq-o-matic.net/2008/01/13/ldap-grundlagen-fuer-active-directory/
https://www.faq-o-matic.net/2002/09/21/active-directory-ldap-feldnamen/
;)
Und zu schreiben was man will, ist doch garnicht schwer, oder?
Achja - und bei Exchange ist ein öffentlicher Ordner etwas ganz anderes
Du meinst wahrscheinlich das Globale Adressbuch
Gruß Norbert
- Bearbeitet NobbyausHBModerator Samstag, 4. Juli 2015 09:44
-
Moin,
na, dass waren doch nützliche Infos. Hättest Du den zweiten Absatz gleich geschrieben, hättest Du auch gleich Antworten in die richtige Richtung bekommen.
Schau mal hier, Zugriff auf's Globale Adressbuch über ein installiertes Outlook (das ist dafür Pflicht und muss vermutlich in VBA als Verweis eingebunden sind) in VBA:
https://www.xing.com/communities/posts/global-address-list-gal-auslesen-1002110363
Und hier noch ein paar Beispiele:
http://www.mrexcel.com/forum/excel-questions/541334-excel-visual-basic-applications-load-outlook-gal-data.html
http://stackoverflow.com/questions/18405567/outlook-2010-gal-with-excel-vba
Gruesse aus Berlin schickt Robert - MVP Exchange Server
-
Allerdings ist natürlich nicht sichergestellt, das die Person auch noch im Unternehmen tätig ist, je nachdem wie gut HR und IT zusammenarbeiten.
Schon klar, aber für das was ich damit realisieren will, ist das schon mal eine ganz gute Näherung.
Kann ich mit dieser LDAP-Abfrage auch heraus bekommen, wer der jeweilige Vorgestzte ist?
Achja - und bei Exchange ist ein öffentlicher Ordner etwas ganz anderes Du meinst wahrscheinlich das Globale Adressbuch
Genau so ist es.
Danke für die Hinweise! -
Hiermit bekomme ich die gewünschten Ergebnisse:
Public Function getUsersDN(ByVal strUsername As String) Dim objConnection As Object, objCommand As Object, objRecordSet As Object Dim strDN As String Const ADS_SCOPE_SUBTREE = 2 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 distinguishedName FROM 'LDAP://dc=xxx,DC=com' " & _ "WHERE objectCategory='user' " & _ "AND CN = '" & strUsername & "'" On Error Resume Next Set objRecordSet = objCommand.Execute If Err.Number <> 0 Then MsgBox "Exception occured: " & Err.Description On Error GoTo 0 If objRecordSet.EOF Then getUsersDN = "" Else objRecordSet.MoveFirst Do Until objRecordSet.EOF strDN = objRecordSet.Fields("distinguishedName").Value getUsersDN = strDN objRecordSet.MoveNext Loop End If Set objCommand = Nothing Set objConnection = Nothing End Function
Benötigt noch ein wenig Feinschliff aber ist schon ganz brauchbar.
- Als Antwort markiert Cheaptrick_la Dienstag, 14. Juli 2015 12:26
- Bearbeitet Cheaptrick_la Dienstag, 14. Juli 2015 14:52
-
Ja, eine korrekte Fragestellung hilft bei der Problemlösung meistens...
(Tipp: Dein Script liest NICHT "das öffentliche Adressbuch" - die erste Formulierung - und auch NICHT das "Globale Adressbuch" - korrigierte Aussage - aus).
Gruesse aus Berlin schickt Robert - MVP Exchange Server