28.03.2019 Aufrufe

Hahner_Microsoft-Word-2010---Das-Ideenbuch_ISBN_9783866457980

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Benutzerdaten abrufen: INI-Datei, Registry oder Active Directory<br />

End If<br />

On Error GoTo 0<br />

Set oadUser = Nothing<br />

Set oadSystemInfo = Nothing<br />

End Sub<br />

Nicht immer ist der am PC angemeldete Benutzer auch derjenige, dessen Daten in den<br />

Dokumentvorlagen oder Formularen eingesetzt werden sollen. In diesem Fall können<br />

Sie in einem Dialogfeld alle im AD hinterlegten Benutzer anzeigen und den Benutzer<br />

selbst auswählen lassen (siehe Abbildung 7.12). Dieser Vorgang ist zugegebenermaßen<br />

deutlich aufwendiger und erfordert spezielle »AD-Datenbankabfragen«.<br />

Listing 7.7 Die Abfrage aller Benutzer im AD ist deutlich aufwendiger<br />

Sub pAlleBenutzerAusDemADauslesen()<br />

Dim objRootDSE As Object<br />

Dim strDNSDomain As String<br />

Dim adoCommand, adoConnection, adoRecordset As Object<br />

On Error Resume Next<br />

Set objRootDSE = GetObject("LDAP://RootDSE")<br />

If Err = 0 Then<br />

strDNSDomain = objRootDSE.Get("defaultNamingContext")<br />

Set adoCommand = CreateObject("ADODB.Command")<br />

Set adoConnection = CreateObject("ADODB.Connection")<br />

adoConnection.Provider = "ADsDSOObject"<br />

adoConnection.Open "Active Directory Provider"<br />

adoCommand.ActiveConnection = adoConnection<br />

adoCommand.CommandText = ";" & _<br />

"(&(objectCategory=person)(objectClass=user));" & _<br />

"sn,givenName,streetAddress,postalCode,l;subtree"<br />

Set adoRecordset = adoCommand.Execute<br />

Do Until adoRecordset.EOF<br />

If Not IsNull((adoRecordset.Fields("sn").Value)) Then<br />

frmAlleBenutzerAusADauslesen.lstBenutzer.AddItem _<br />

adoRecordset.Fields("sn").Value & ", " & _<br />

adoRecordset.Fields("givenName").Value & ", " & _<br />

adoRecordset.Fields("streetAddress").Value & ", " & _<br />

adoRecordset.Fields("postalCode").Value & ", " & _<br />

adoRecordset.Fields("l").Value<br />

End If<br />

adoRecordset.MoveNext<br />

Loop<br />

Else<br />

frmAlleBenutzerAusADauslesen.lstBenutzer.AddItem "- Kein AD vorhanden - "<br />

End If<br />

On Error GoTo 0<br />

End Sub<br />

In der in Listing 7.7 gezeigten Routine wird zuerst der Root-Eintrag des AD ermittelt,<br />

um anschließend von dort aus alle User-Objekte auszulesen und im Listenfeld lstBenutzer<br />

213

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!