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