Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Active Directory auslesen

198 views
Skip to first unread message

andres...@yahoo.de

unread,
May 4, 2005, 12:10:49 PM5/4/05
to
Hi @all,

Ich habe dieses Forum und einige Google Suchergebnisse bereits
abgegrast, kann aber keine befriedigenden VBA-Funktion finden, mit der
ich das Active Directory auslesen kann.

Bitte postet die Funktion, oder schreibt mir, wo ich sie finde.

Besten Dank im voraus
Gruß Andre

Ulrich Haarmeyer

unread,
May 4, 2005, 12:23:51 PM5/4/05
to
Hallo Andre

<andres...@yahoo.de> schrieb im Newsbeitrag
news:1115223048.9...@o13g2000cwo.googlegroups.com...
Hi @all,

Ich habe dieses Forum und einige Google Suchergebnisse bereits
abgegrast, kann aber keine befriedigenden VBA-Funktion finden, mit der
ich das Active Directory auslesen kann.

Bitte postet die Funktion, oder schreibt mir, wo ich sie finde.

Das ActiveDirectory ist NICHT das aktuelle Verzeichnis, oder?

Deine Angabe ist so konkret als wenn ich einem Taxifahrer sage: Ich wohne in
Dortmund, bring mich nach Hause

Gruß
Uli


Mark Doerbandt

unread,
May 4, 2005, 12:45:14 PM5/4/05
to
Hallo, Ulrich,

Ulrich Haarmeyer:

> Das ActiveDirectory ist NICHT das aktuelle Verzeichnis, oder?

Der war gut!

Z.B.
http://www.microsoft.com/windowsserver2003/technologies/directory/activedirectory/default.mspx
(Link in eine Zeile)

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.

Mark Doerbandt

unread,
May 4, 2005, 12:46:57 PM5/4/05
to
Hallo,

andres...@yahoo.de:

> kann aber keine befriedigenden VBA-Funktion finden, mit der
> ich das Active Directory auslesen kann.

Klaus O hat neulich dazu den folgenden Link gepostet:

http://www.devx.com/vb2themax/Tip/19289

Was reicht Dir daran nicht?

Philipp Stiefel

unread,
May 4, 2005, 12:51:27 PM5/4/05
to
<andres...@yahoo.de> schrieb:

> Ich habe dieses Forum und einige Google Suchergebnisse bereits
> abgegrast, kann aber keine befriedigenden VBA-Funktion finden,
> mit der ich das Active Directory auslesen kann.

Das könnte möglicherweise evtl. daran liegen, dass es diese Funktion
nicht gibt. ;-)

Da du uns verschweigst, was du genau auslesen willst, wirst du
dich nochmal bei Google auf die Suche machen müssen. Das Stichwort
"ADSI" könnte dir dabei helfen.

Gruß
Phil

--
Bitte verwendet für Fragen zu Access mit DBMS-Server-Backends
die Newsgroup microsoft.public.de.access.clientserver! Danke!

Richtig zitieren im Usenet -> http://got.to/quote

Johann Pumhösl

unread,
May 4, 2005, 2:13:36 PM5/4/05
to
Hallo,

"Ulrich Haarmeyer" <uli1...@hotmail.com> schrieb im Newsbeitrag
news:uWfmTWMU...@TK2MSFTNGP14.phx.gbl...

Das aktuelle Verzeichnis (=Arbeitsverzeichnis) lässt sich mit API
GetCurrentDirectory() ermitteln:

' -------------------------------------------------------------
' API's
' -------------------------------------------------------------
Private Declare Function GetCurrentDirectory Lib "kernel32.dll" Alias
"GetCurrentDirectoryA" ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long


Private Sub test_click()

MsgBox fGetCurrentDir

End Sub

' -------------------------------------------------------------
' Function's
' -------------------------------------------------------------
Private Function fGetCurrentDir() As String
' das aktuelle Verzeichnis (Arbeitsverzeichnis) ermitteln
Dim lpBuffer As String
lpBuffer = String(1024, Chr(0))
If (GetCurrentDirectory(1024, lpBuffer) <> 0) Then
fGetCurrentDir = Left(lpBuffer, InStr(1, lpBuffer, Chr(0)) - 1)
End If
End Function

Gruss Johann
-----
m&p supportpages, http://members.aon.at/millpartner


Henry Habermacher [MVP Access]

unread,
May 5, 2005, 12:52:23 AM5/5/05
to
Hallo Johann

quoting Johann Pumhösl <aon.91...@aon.at>:
> Das aktuelle Verzeichnis (=Arbeitsverzeichnis) lässt sich mit API
> GetCurrentDirectory() ermitteln:

Oder ganz einfach mittels:

MsgBox CurDir

Aber darum ging es hier wohl nicht, sondern um das ActiveDirectory und der
Zugriff über LDAP

Gruss
Henry


--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org

Henry Habermacher [MVP Access]

unread,
May 5, 2005, 12:57:23 AM5/5/05
to
Hallo andreasstein11

Bitte stelle Deinen Realnamen ein, danke

quoting andres...@yahoo.de <andres...@yahoo.de>:

> Bitte postet die Funktion, oder schreibt mir, wo ich sie finde.

Meinst Du diese, die ich hier schon 2 mal gepostet habe?

Public Function searchInAD( _
Optional sAMAccountName As Variant = Null, _
Optional sn As Variant = Null, _
Optional givenname As Variant = Null, _
Optional department As Variant = Null, _
Optional displayname As Variant = Null)

Dim objconn As Object
Dim objCommand As Object
Dim objRoot As Object
Dim objDomain As Object
Dim objRS As Object
Dim strDomain As String
Dim strSQL As String
Dim varSearch As Variant

On Error GoTo PROC_ERR

'ADO Connection ins AD aufbauen
Set objconn = CreateObject("ADODB.Connection")
objconn.Provider = "ADsDSOObject"
objconn.Open "Active Directory Provider"

'Command Objekt instanziieren und definieren
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objconn

'Pfad ins AD holen
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = objRoot.Get("defaultNamingContext")
Set objDomain = GetObject("LDAP://" & strDomain)

'Query aufbauen
strSQL = "SELECT displayname, cn, " & _
"sAMAccountName, company, givenname, " & _
"sn, l, mail, department, telephoneNumber, " & _
"facsimileTelephoneNumber, " & _
"physicalDeliveryOfficeName" & _
" FROM 'LDAP://" & strDomain & "'" & _
" WHERE "

'Bedingung aufbauen
varSearch = Null
If Not IsNull(sAMAccountName) Then
varSearch = "sAMAccountName='" & sAMAccountName & "'"
End If
If Not IsNull(sn) Then
varSearch = (varSearch + " AND ") & _
"sn='" & sn & "*'"
End If
If Not IsNull(givenname) Then
varSearch = (varSearch + " AND ") & _
"givenname='" & givenname & "*'"
End If
If Not IsNull(department) Then
varSearch = (varSearch + " AND ") & _
"department='" & department & "*'"
End If
If Not IsNull(displayname) Then
varSearch = (varSearch + " AND ") & _
"displayname='" & displayname & "*'"
End If

'SQL Statement zusammensetzen
If Not IsNull(varSearch) Then
strSQL = strSQL & varSearch
End If

'und Befehl dem CommandObject übergeben
objCommand.CommandText = strSQL

'Query ausführen
Set objRS = objCommand.Execute

'Gefundene Einträge abarbeiten
If objRS.RecordCount > 0 Then
With objRS
.MoveFirst
While Not .EOF
Debug.Print "DisplayName = " & Nz(!displayname)
Debug.Print "Alias = " & Nz(!cn)
Debug.Print "PID = " & Nz(!sAMAccountName)
Debug.Print "BU = " & Nz(!company)
Debug.Print "FirstName = " & Nz(!givenname)
Debug.Print "LastName = " & Nz(!sn)
Debug.Print "Location = " & Nz(!l)
Debug.Print "EMail = " & Nz(!mail)
Debug.Print "Departement = " & Nz(!department)
Debug.Print "Phone = " & Nz(!telephoneNumber)
Debug.Print "Fax = " & Nz(!facsimileTelephoneNumber)
Debug.Print "Office = " & Nz(!physicalDeliveryOfficeName)
.MoveNext
Wend
.Close
End With
End If

PROC_EXIT:
Set objRS = Nothing
Set objconn = Nothing
Exit Function

PROC_ERR:
MsgBox "Fehler beim Lesen des AD. Fehler-Nr. " & _
Err.Number & vbCrLf & vbCrLf & _
Err.Description & vbCrLf & vbCrLf & _
"Zusatzinformation: " & vbCrLf & _
"Domain = " & strDomain & vbCrLf & _
"Command: " & vbCrLf & strSQL
Resume PROC_EXIT
End Function

andres...@yahoo.de

unread,
May 10, 2005, 3:21:30 AM5/10/05
to
Hallo Henry,

Danke für die Funktion.
Jetzt muss ich nur noch rausfinden, welche Feldnamen das Active
Directory bereitstellt.

Gruß Andre

P.S.
Was den Realname betrifft: Mein Name ist Andre Stein. Bei allen
bisherigen Postings wurde der Name auch korrekt mitgegeben. Habe mein
Google-Konto geprüft. Auch da ist alles korrekt eingetragen. Ich habe
keine Ahnung, warum plötzlich meine E-Mail-Adresse als Realname
ausgegeben wird.

Andre Stein

unread,
May 10, 2005, 6:43:37 AM5/10/05
to
Schlaumeier :-),

ActiveDirectory und der Zugriff über LDAP natürlich.


Gruß Andre

Henry Habermacher [MVP Access]

unread,
May 10, 2005, 8:54:32 AM5/10/05
to
Hallo Andre

quoting andres...@yahoo.de <andres...@yahoo.de>:
> Danke für die Funktion.
> Jetzt muss ich nur noch rausfinden, welche Feldnamen das Active
> Directory bereitstellt.

Eigentlich wollte ich dich auf www.rlmueller.net schicken, aber die Seite
ist gerade "under construction". Die Datei findest Du dort aber noch, die
das eingermassen übersichtlich auflistet, was standardmässig drin ist:

http://www.rlmueller.net/References/PropertyMethods.xls

Aber Achtung: Welche Felder es wirklich gibt, hängt von der Implementation
des AD/LDAP ab und kann von System zu System unterschiedlich sein.

Genauere Informationen findest Du beim Hersteller. Bei MS sind diese AFAIK
nirgends so sauber aufgelistet. Wenn Du aber davon ausgehen kannst, dass bei
Euch ein Standard AD installiert ist, welches über das Standard
UserInterface gepflegt wird, dann dürfte folgender Link helfen (Mappings der
Felder des UIs auf das AD)
http://msdn.microsoft.com/library/en-us/ad/ad/active_directory_user_interface_mappings.asp

HTH

stefacht

unread,
Jul 14, 2005, 8:32:17 AM7/14/05
to

Hi Henry,

die Funktion ist super, danke!
Hab allerdings die Abfrage um Anrede und Beschreibung erweitert:

'Query aufbauen
strSQL = "SELECT displayname, cn, " & _
"sAMAccountName, company, givenname, " & _
"sn, l, mail, department, telephoneNumber, " & _
"facsimileTelephoneNumber, " & _

"physicalDeliveryOfficeName, title, description " & _


" FROM 'LDAP://" & strDomain & "'"

' Ausgabe
Debug.Print "Anrede = " & objRS!Title
Debug.Print "Beschreibung = " & objRS!Description

Leider funktioniert das mit der Beschreibung nicht so richtig. Ich
bekomm immer einen Laufzeitfehler "Typen unverträglich", hab aber keine
Ahnung, was da nicht passt. Es soll doch einfach nur der Inhalt von
objRS!Description ausgegeben werden!

Hast du (oder jemand anderer) vielleicht eine Lösung?


--
stefacht
------------------------------------------------------------------------
stefacht's Profile: http://www.msusenet.com/member.php?userid=3365
View this thread: http://www.msusenet.com/t-1870405264

Henry Habermacher [MVP Access]

unread,
Jul 14, 2005, 10:04:24 PM7/14/05
to
Hallo Stefacht

Bitte verwende hier den vollen Realnamen

quoting stefacht <stefach...@no-mx.msusenet.com>:

> Debug.Print "Beschreibung = " & objRS!Description
>
> Leider funktioniert das mit der Beschreibung nicht so richtig. Ich
> bekomm immer einen Laufzeitfehler "Typen unverträglich", hab aber
> keine Ahnung, was da nicht passt. Es soll doch einfach nur der Inhalt
> von objRS!Description ausgegeben werden!
>
> Hast du (oder jemand anderer) vielleicht eine Lösung?


objRS!Description ist ein Variant vom Typ Array (findest Du im Direktfenster
mittels VarType(objRS!Description) raus.
Das heisst dieses Feld kann mehrere Elemente beinhalten (in der Regel ist es
im AD nur eines, muss aber nicht sein).

Wenn Du das auslesen willst, machst Du folgendes:
- zuerst dieses Feld einer Variablen vom Typ Variant zuweisen, damit Du an
die einzelnen Elemente rankommst
- danach die einzelnen Elemente des Arrays über LBound() und UBound()
auslesen.

Das könnte etwa so aussehen:

Dim I As Long
Dim arrDescription As Variant
...
arrDescription = objRS!Description
If VarType(arrDescription) And vbArray = vbArray Then
For I = LBound(arrDescription) To UBound(arrDescription)
Debug.Print "Description)" & I & ") = " & arrDescription(I)
Next
Else
Debug.Print "Description = " & arrDescription
End If

stefacht

unread,
Jul 15, 2005, 7:15:51 AM7/15/05
to

Super danke!

-----

Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
einstellen, dass er immer statt dem nickname verwendet wird?

Reiner Wolff

unread,
Jul 15, 2005, 12:54:45 PM7/15/05
to
Moin stefacht,

*stefacht* schrieb:

> Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
> einstellen, dass er immer statt dem nickname verwendet wird?

Das klingt danach, als würdest Du uns noch etwas erhalten bleiben :)
Allerdings kann ich Deine Frage für den von Dir benutzten Zugang leider
nicht beantworten.
Allerdings möchte ich Dir dann einen vernünftigen Newsreader[1]
empfehlen, damit Du das ganze nicht online machen musst und das ganze
etwas komfortabler hast.

Solltest Du Dir noch weitere Newsreader anschauen wollen, hätte ich hier
noch ein paar Alternativen:
<Werbetrommel>
Forte Agent
http://www.forteinc.com/main/homepage.php

Mozilla Thunderbird
http://www.mozilla.org/products/thunderbird/

oder Gravity
http://gravity.tbates.org/super.html
</Werbetrommel>

HTH
Greetinx aus Kiel
Reiner

P.S.: Falls Du auch noch Interesse (als Neuling) hast, Dir ein paar
Grundbegriffe zum Usenet durchzulesen, findest Du hier einige nette
Beschreibungen: http://einklich.net/usenet/rules.htm

Fußnote(n):
===========
[1] Programm: http://www.40tude.com/dialog/
Anleitung: http://www.gaehn.org/software/40tude-dialog/tutorial/
--
Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts.
(Albert Einstein)

Henry Habermacher [MVP Access]

unread,
Jul 16, 2005, 1:48:22 AM7/16/05
to
Hallo Stefacht

quoting stefacht <stefach...@no-mx.msusenet.com>:

> Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
> einstellen, dass er immer statt dem nickname verwendet wird?

Du sollst eben den Realnamen im Feld eingeben, in dem Du den Nickname
eingegeben hast. Dann erscheint auch der Realname. So einfach geht das ;-)

Gruss

Peter Doering

unread,
Jul 16, 2005, 7:38:04 AM7/16/05
to
Hallo Henry,

Henry Habermacher [MVP Access] wrote:
> quoting stefacht <stefach...@no-mx.msusenet.com>:
>
>> Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
>> einstellen, dass er immer statt dem nickname verwendet wird?
>
> Du sollst eben den Realnamen im Feld eingeben, in dem Du den Nickname
> eingegeben hast. Dann erscheint auch der Realname. So einfach geht das ;-)

In seinem Fall nicht ;-)

Er postet ueber ein BBS-Usenet-Gateway (msusenet.com). Siehe
http://www.msusenet.com/showthread.php?t=1870405264&page=2&pp=10
Post 16 ;-) Er muesste schon seinen Nick aendern und das lassen viele Foren
nicht zu.

Gruss - Peter

--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Henry Habermacher [MVP Access]

unread,
Jul 17, 2005, 10:44:44 PM7/17/05
to
Hallo Peter

quoting Peter Doering <nos...@doering.org>:

>> Du sollst eben den Realnamen im Feld eingeben, in dem Du den Nickname
>> eingegeben hast. Dann erscheint auch der Realname. So einfach geht
>> das ;-)
>
> In seinem Fall nicht ;-)
>
> Er postet ueber ein BBS-Usenet-Gateway (msusenet.com). Siehe
> http://www.msusenet.com/showthread.php?t=1870405264&page=2&pp=10
> Post 16 ;-) Er muesste schon seinen Nick aendern und das lassen viele
> Foren nicht zu.

Genau das habe ich doch geschrieben: "im Feld Nickname den Realname
eingeben."

0 new messages