<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Office%3AWord2010_Benutzerdaten_aus_ActiveDirectory_verwenden</id>
	<title>Office:Word2010 Benutzerdaten aus ActiveDirectory verwenden - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Office%3AWord2010_Benutzerdaten_aus_ActiveDirectory_verwenden"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Office:Word2010_Benutzerdaten_aus_ActiveDirectory_verwenden&amp;action=history"/>
	<updated>2026-04-28T07:02:38Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=Office:Word2010_Benutzerdaten_aus_ActiveDirectory_verwenden&amp;diff=6629&amp;oldid=prev</id>
		<title>BLinz am 9. Dezember 2014 um 12:37 Uhr</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Office:Word2010_Benutzerdaten_aus_ActiveDirectory_verwenden&amp;diff=6629&amp;oldid=prev"/>
		<updated>2014-12-09T12:37:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
[[Kategorie:Active_Directory]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;color:black; background-color:lightgrey&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;*** Am 16.06.2011 überarbeitet - Ihr findet am Ende nun auch ein Beispiel das mit Suchen &amp;amp; Ersetzen arbeitet statt mit Formularfeldern ***&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Hinweis| Diese Anleitung ist für Word 2010. Das ganze funktioniert aber 1:1 ohne Änderungen auch unter Word 2013}}&amp;lt;br&amp;gt;&lt;br /&gt;
=Einleitung=&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Beispiel für die Abfrage des Active Directory aus Word heraus mittels Visual Basic für Applikationen (VBA).&lt;br /&gt;
&lt;br /&gt;
Weiter unten findet Ihr das Beispieldokument zum selber testen. Die Beispiele funktionieren natürlich nur, wenn diese von einem Domänenbenutzer durchgeführt werden - auf einem lokalen Rechner gibt es kein Active Directory.&lt;br /&gt;
&lt;br /&gt;
Hier einmal die Demo-Datei: [[Media:ActiveDirectory-Test.docm.zip]]&lt;br /&gt;
&lt;br /&gt;
Auf den Bilder könnt Ihr sehen was wir machen wollen - ein Word-Dokument mit 2 Schaltflächen.&amp;lt;br&amp;gt;&lt;br /&gt;
Die erste Schaltfläche schreibt in alle Felder ein &amp;quot; - &amp;quot;, die zweite liest die AD-Daten des gerade angemeldeten Benutzers aus und trägt diese in die Felder ein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Word-AD-Test1.gif|Vorher&lt;br /&gt;
Datei:Word-AD-Test2.gif|Nacher&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Word Dokument Vorbereiten==&lt;br /&gt;
===DocVariable einfügen===&lt;br /&gt;
Wir wollen mit VBA Werte im aktiven Dokument ändern. Da es am einfachsten ist habe ich mich für Formularfelder vom Typ &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;DocTariable&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; entschieden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen ein solches Feld ein über&lt;br /&gt;
&lt;br /&gt;
Ribbon &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Einfügen&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; -- &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Schnellbausteine&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; -- &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Feld...&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:DocVariable.gif]]&lt;br /&gt;
&lt;br /&gt;
Unter &amp;quot;Neuer Name&amp;quot; geben wir dem Feld den Namen über den wir es dann von VBA aus ansprechen, hier z.B. Vorname.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===VBA Makro erstellen===&lt;br /&gt;
&lt;br /&gt;
Nachdem wir alle gewünschten Felder eingefügt und formatiert haben öffnen wir die Visual Basic Konsole ( &amp;#039;&amp;#039;&amp;#039;[ALT]+[F11]&amp;#039;&amp;#039;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
Hier fügen wir ein neues Modul ein (Modul1) und erstellen die Routine / das Makro:&lt;br /&gt;
&lt;br /&gt;
====VBA Makro Langversion====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Sub ADTest()&lt;br /&gt;
 &lt;br /&gt;
&amp;#039; dv steht für DOCVARIABLE - das sind die Felder im eigentlichen Word-Dokument&lt;br /&gt;
Dim dvVorname               As String&lt;br /&gt;
Dim dvInitialen             As String&lt;br /&gt;
Dim dvNachname              As String&lt;br /&gt;
Dim dvAnzeigename           As String&lt;br /&gt;
Dim dvBeschreibung          As String&lt;br /&gt;
Dim dvBuero                 As String&lt;br /&gt;
Dim dvRufnummer             As String&lt;br /&gt;
Dim dvEmail                 As String&lt;br /&gt;
Dim dvWebseite              As String&lt;br /&gt;
Dim dvStrasse               As String&lt;br /&gt;
Dim dvPostfach              As String&lt;br /&gt;
Dim dvOrt                   As String&lt;br /&gt;
Dim dvBundesland            As String&lt;br /&gt;
Dim dvPostleitzahl          As String&lt;br /&gt;
Dim dvLand                  As String&lt;br /&gt;
Dim dvBenutzeranmeldename   As String&lt;br /&gt;
Dim dvRufnummernPrivat      As String&lt;br /&gt;
Dim dvRufnummernPager       As String&lt;br /&gt;
Dim dvRufnummernMobil       As String&lt;br /&gt;
Dim dvRufnummernFax         As String&lt;br /&gt;
Dim dvRufnummernIPTelefon   As String&lt;br /&gt;
Dim dvAnmerkungen           As String&lt;br /&gt;
Dim dvPosition              As String&lt;br /&gt;
Dim dvAbteilung             As String&lt;br /&gt;
Dim dvFirma                 As String&lt;br /&gt;
Dim dvVorgesetzter          As String&lt;br /&gt;
Dim dvMitarbeiter           As String&lt;br /&gt;
&lt;br /&gt;
&amp;#039;Variablen für AD-Abfrage&lt;br /&gt;
Dim varQuery As String&lt;br /&gt;
Dim objSystemInfo As Object&lt;br /&gt;
Dim objBenutzer As Object&lt;br /&gt;
&lt;br /&gt;
&amp;#039; Active Directory Informationen des angemeldeten Benutzers lesen&lt;br /&gt;
Set objSystemInfo = CreateObject(&amp;quot;ADSystemInfo&amp;quot;)&lt;br /&gt;
varQuery = &amp;quot;LDAP://&amp;quot; &amp;amp; objSystemInfo.UserName&lt;br /&gt;
&amp;#039; mit Nachfolgender Zeile haben wir einen Zeiger auf das AD-Objekt des Benutzers&lt;br /&gt;
&amp;#039; damit können wir alle AD-Felder abfragen&lt;br /&gt;
Set objBenutzer = GetObject(varQuery)&lt;br /&gt;
&lt;br /&gt;
&amp;#039; Nachdem wir Zeiger haben füllen wir unserer Variablen&lt;br /&gt;
dvVorname = objBenutzer.givenName&lt;br /&gt;
dvInitialen = objBenutzer.initials&lt;br /&gt;
dvNachname = objBenutzer.sn&lt;br /&gt;
dvAnzeigename = objBenutzer.DisplayName&lt;br /&gt;
dvBeschreibung = objBenutzer.Description&lt;br /&gt;
dvBuero = objBenutzer.PhysicalDeliveryOfficeName&lt;br /&gt;
dvRufnummer = objBenutzer.telephoneNumber&lt;br /&gt;
dvEmail = objBenutzer.mail&lt;br /&gt;
dvWebseite = objBenutzer.wWWHomepage&lt;br /&gt;
dvStrasse = objBenutzer.streetAddress&lt;br /&gt;
dvPostfach = objBenutzer.postOfficeBox&lt;br /&gt;
dvOrt = objBenutzer.l&lt;br /&gt;
dvBundesland = objBenutzer.st&lt;br /&gt;
dvPostleitzahl = objBenutzer.postalCode&lt;br /&gt;
dvLand = objBenutzer.CO&lt;br /&gt;
dvBenutzeranmeldename = objBenutzer.sAMAccountName&lt;br /&gt;
dvRufnummernPrivat = objBenutzer.homePhone&lt;br /&gt;
dvRufnummernPager = objBenutzer.pager&lt;br /&gt;
dvRufnummernMobil = objBenutzer.mobile&lt;br /&gt;
dvRufnummernFax = objBenutzer.facsimileTelephoneNumber&lt;br /&gt;
dvRufnummernIPTelefon = objBenutzer.ipPhone&lt;br /&gt;
dvAnmerkungen = objBenutzer.info&lt;br /&gt;
dvPosition = objBenutzer.Title&lt;br /&gt;
dvAbteilung = objBenutzer.department&lt;br /&gt;
dvFirma = objBenutzer.company&lt;br /&gt;
dvVorgesetzter = objBenutzer.manager&lt;br /&gt;
&lt;br /&gt;
&amp;#039; nun füllen wir die DOCVARIABLEN im Dokument mit diesen Werten&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Vorname&amp;quot;).Value = dvVorname&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Initialen&amp;quot;).Value = dvInitialen&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Nachname&amp;quot;).Value = dvNachname&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Anzeigename&amp;quot;).Value = dvAnzeigename&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Beschreibung&amp;quot;).Value = dvBeschreibung&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Buero&amp;quot;).Value = dvBuero&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Rufnummer&amp;quot;).Value = dvRufnummer&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Email&amp;quot;).Value = dvEmail&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Webseite&amp;quot;).Value = dvWebseite&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Strasse&amp;quot;).Value = dvStrasse&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Postfach&amp;quot;).Value = dvPostfach&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Ort&amp;quot;).Value = dvOrt&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Bundesland&amp;quot;).Value = dvBundesland&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Postleitzahl&amp;quot;).Value = dvPostleitzahl&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Land&amp;quot;).Value = dvLand&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Benutzeranmeldename&amp;quot;).Value = dvBenutzeranmeldename&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernPrivat&amp;quot;).Value = dvRufnummernPrivat&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernPager&amp;quot;).Value = dvRufnummernPager&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernMobil&amp;quot;).Value = dvRufnummernMobil&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernFax&amp;quot;).Value = dvRufnummernFax&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernIPTelefon&amp;quot;).Value = dvRufnummernIPTelefon&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Anmerkungen&amp;quot;).Value = dvAnmerkungen&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Position&amp;quot;).Value = dvPosition&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Abteilung&amp;quot;).Value = dvAbteilung&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Firma&amp;quot;).Value = dvFirma&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Vorgesetzter&amp;quot;).Value = dvVorgesetzter&lt;br /&gt;
&lt;br /&gt;
&amp;#039; und zum Schluss die Werte aller Felder einmal aktualisieren (damit die neuen Werte auch sofort angezeigt werden)&lt;br /&gt;
ActiveDocument.Fields.Update&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Erläuterungen zum VBA Makro====&lt;br /&gt;
Wir definieren zunächst sauber alle verwendeten Variablen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; dv steht für DOCVARIABLE - das sind die Felder im eigentlichen Word-Dokument&lt;br /&gt;
Dim dvVorname               As String&lt;br /&gt;
Dim dvInitialen             As String&lt;br /&gt;
Dim dvNachname              As String&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Und holen uns unser ActiveDirectory Benutzerobjekt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; Active Directory Informationen des angemeldeten Benutzers lesen&lt;br /&gt;
Set objSystemInfo = CreateObject(&amp;quot;ADSystemInfo&amp;quot;)&lt;br /&gt;
varQuery = &amp;quot;LDAP://&amp;quot; &amp;amp; objSystemInfo.UserName&lt;br /&gt;
&amp;#039; mit Nachfolgender Zeile haben wir einen Zeiger auf das AD-Objekt des Benutzers&lt;br /&gt;
&amp;#039; damit können wir alle AD-Felder abfragen&lt;br /&gt;
Set objBenutzer = GetObject(varQuery)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Danach füllen wir unsere Variablen - ja ja ich weis, das müssten wir nicht extra tun, wir könnten die Daten auch direkt nutzen. Das Makro hier dienst jedoch noch als vorlage für andere Projekte - und so habe ich dann schon mal alles für die Weiterverarbeitung.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; Nachdem wir Zeiger haben füllen wir unserer Variablen&lt;br /&gt;
dvVorname = objBenutzer.givenName&lt;br /&gt;
dvInitialen = objBenutzer.initials&lt;br /&gt;
dvNachname = objBenutzer.sn&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Anschluss schreiben wir die Werte in die &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;DocVariablen&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; nun füllen wir die DOCVARIABLEN im Dokument mit diesen Werten&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Vorname&amp;quot;).Value = dvVorname&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Initialen&amp;quot;).Value = dvInitialen&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Nachname&amp;quot;).Value = dvNachname&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ganz am Schluss müssen wir Word noch dazu bringen, den Inhalt der Felder zu aktualisieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; und zum Schluss die Werte aller Felder einmal aktualisieren (damit die neuen Werte auch sofort angezeigt werden)&lt;br /&gt;
ActiveDocument.Fields.Update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
und das war schon alles&lt;br /&gt;
&lt;br /&gt;
====VBA Makro Kurzversion====&lt;br /&gt;
Wenn Ihr euch den Zwischenschritt mit den Variablen sparen wollt, es geht auch direkt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Sub ADTestKurz()&lt;br /&gt;
 &lt;br /&gt;
&amp;#039;Variablen für AD-Abfrage&lt;br /&gt;
 &lt;br /&gt;
Dim varQuery As String&lt;br /&gt;
Dim objSystemInfo As Object&lt;br /&gt;
Dim objBenutzer As Object&lt;br /&gt;
 &lt;br /&gt;
&amp;#039; Active Directory Informationen des angemeldeten Benutzers lesen&lt;br /&gt;
Set objSystemInfo = CreateObject(&amp;quot;ADSystemInfo&amp;quot;)&lt;br /&gt;
varQuery = &amp;quot;LDAP://&amp;quot; &amp;amp; objSystemInfo.UserName&lt;br /&gt;
&amp;#039; mit Nachfolgender Zeile haben wir einen Zeiger auf das AD-Objekt des Benutzers&lt;br /&gt;
&amp;#039; damit können wir alle AD-Felder abfragen&lt;br /&gt;
Set objBenutzer = GetObject(varQuery)&lt;br /&gt;
 &lt;br /&gt;
&amp;#039; nun füllen wir die DOCVARIABLEN im Dokument mit diesen Werten&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Vorname&amp;quot;).Value = objBenutzer.givenName&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Initialen&amp;quot;).Value = objBenutzer.initials&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Nachname&amp;quot;).Value = objBenutzer.sn&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Anzeigename&amp;quot;).Value = objBenutzer.DisplayName&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Beschreibung&amp;quot;).Value = objBenutzer.Description&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Buero&amp;quot;).Value = objBenutzer.PhysicalDeliveryOfficeName&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Rufnummer&amp;quot;).Value = objBenutzer.telephoneNumber&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Email&amp;quot;).Value = objBenutzer.mail&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Webseite&amp;quot;).Value = objBenutzer.wWWHomepage&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Strasse&amp;quot;).Value = objBenutzer.streetAddress&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Postfach&amp;quot;).Value = objBenutzer.postOfficeBox&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Ort&amp;quot;).Value = objBenutzer.l&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Bundesland&amp;quot;).Value =objBenutzer.st&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Postleitzahl&amp;quot;).Value = objBenutzer.postalCode&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Land&amp;quot;).Value = objBenutzer.CO&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Benutzeranmeldename&amp;quot;).Value = objBenutzer.sAMAccountName&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernPrivat&amp;quot;).Value = objBenutzer.homePhone&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernPager&amp;quot;).Value = objBenutzer.pager&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernMobil&amp;quot;).Value = objBenutzer.mobile&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernFax&amp;quot;).Value = objBenutzer.facsimileTelephoneNumber&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;RufnummernIPTelefon&amp;quot;).Value = objBenutzer.ipPhone&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Anmerkungen&amp;quot;).Value = objBenutzer.info&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Position&amp;quot;).Value = objBenutzer.Title&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Abteilung&amp;quot;).Value = objBenutzer.department&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Firma&amp;quot;).Value = objBenutzer.company&lt;br /&gt;
ActiveDocument.Variables(&amp;quot;Vorgesetzter&amp;quot;).Value = objBenutzer.manager&lt;br /&gt;
&lt;br /&gt;
&amp;#039; und zum Schluss die Werte aller Felder einmal aktualisieren (damit die neuen Werte auch sofort angezeigt werden)&lt;br /&gt;
ActiveDocument.Fields.Update&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Anfrage: Man müsste das auch auf die Abfrage der Stellverteter ausbauen können, die passenden Feldnamen finden sich hier:&lt;br /&gt;
&lt;br /&gt;
 http://www.msxfaq.de/konzepte/stellvertreter.htm&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Suchen &amp;amp; Ersetzen=&lt;br /&gt;
&lt;br /&gt;
Statt mit den DocVariablen kann auch mit Schlüsselwörtern gearbeitet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Man schreibt in den Text z.B. ein &amp;quot;xxxVORNAMExxx&amp;quot; und lässt es dann durch im AD ermittelten Vornamen ersetzen.&amp;lt;br&amp;gt;&lt;br /&gt;
Das nachfolgende Beispiel arbeitet so - und als Leckerchen ersetzt es auch den Text in Kopf- und Fußzeilen etc.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die verwendeten Schlüsselwörter findet ihr im Quelltext,&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
strReplacementText(1) = &amp;quot;xLNx&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
legt z.B. fest das überall im Text &amp;#039;&amp;#039;&amp;#039;xLNx&amp;#039;&amp;#039;&amp;#039; durch den Nachnamen ersetzt wird (siehe jeweils Kommentar)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Download: [[Media:AD_Data_and_Replace_Text.txt|AD_Data_and_Replace_Text.txt]]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039; #Subfunction#&lt;br /&gt;
&amp;#039;===============================================================================&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039; Name...........: AD_Data_and_Replace_Text()&lt;br /&gt;
&amp;#039; Description ...: Ruft die Daten des aktuellen Benutzers aus dem Active Directory ab und&lt;br /&gt;
&amp;#039;                  setzt diese in das Dokument ein. Dies geschieht über Suchen &amp;amp; Ersetzen,&lt;br /&gt;
&amp;#039;                  xLNx im Text des Dokumentes wird z.B. durch dem in AD hinterlegten&lt;br /&gt;
&amp;#039;                  Nachnamen ersetzt - egal wie oft im Dokument das Schlüsselwort vorkommt.&lt;br /&gt;
&amp;#039;                  Formatierungen bleiben dabei erhalten, das Schlüsselwort wird auch in&lt;br /&gt;
&amp;#039;                  der Kopf- und Fußzeile gefunden und ersetzt.&lt;br /&gt;
&amp;#039; Syntax.........: AD_Data_and_Replace_Text()&lt;br /&gt;
&amp;#039; Parameters ....: keine&lt;br /&gt;
&amp;#039; Return values .: keine&lt;br /&gt;
&amp;#039; Author ........: Bernhard Linz / Bernhard.Linz@datagroup.de / admin@znil.net&lt;br /&gt;
&amp;#039; Modified.......:&lt;br /&gt;
&amp;#039; Remarks .......:&lt;br /&gt;
&amp;#039; Related .......:&lt;br /&gt;
&amp;#039; Link ..........: http://znil.net (Bereich Office / Word)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
Sub AD_Data_and_Replace_Text()&lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039;In den nachfolgenden Variablen werden die Informationen aus dem Active Directory über den aktuellen Benutzer gespeichert.&lt;br /&gt;
   &amp;#039;In der strReplacementText wird der dazu passende Suchtext gespeichert. Das wir dafür 2 Arrays nehmen hat den Grund&lt;br /&gt;
   &amp;#039;das wir so für das Suchen &amp;amp; Ersetzen mit Schleifen arbeiten können - sonst wäre der Quelltext sehr lang geworden wobei&lt;br /&gt;
   &amp;#039;immer wieder das selbe wiederholt worden wäre.&lt;br /&gt;
   &amp;#039;Um das ganze zu Erweitern müssen also unten in den Variablenzuweisungen einfach die weiteren Felder fortlaufend hinzugefügt&lt;br /&gt;
   &amp;#039;werden - und hier oben die Gesamtanzahl angepasst werden. Da wir bei 0 anfangen zu zählen sind also 0 bis 25 = 26 insgesammt.&lt;br /&gt;
   &amp;#039;Also immer einen mehr als der letzte Eintrag&lt;br /&gt;
   Const AnzahlElemente                        As Integer = 26&lt;br /&gt;
   Dim strObject(AnzahlElemente)               As String&lt;br /&gt;
   Dim strReplacementText(AnzahlElemente)      As String&lt;br /&gt;
   &lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039; Allgemeine Variablen&lt;br /&gt;
   Dim Zaehler                                 As Integer&lt;br /&gt;
   Dim oStory                                  As Range&lt;br /&gt;
   &lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039;Variablen für Active Directory-Abfrage&lt;br /&gt;
   Dim varQuery                                As String&lt;br /&gt;
   Dim objSystemInfo                           As Object&lt;br /&gt;
   Dim objBenutzer                             As Object&lt;br /&gt;
   &lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039; Active Directory Informationen des angemeldeten Benutzers lesen&lt;br /&gt;
   Set objSystemInfo = CreateObject(&amp;quot;ADSystemInfo&amp;quot;)&lt;br /&gt;
   varQuery = &amp;quot;LDAP://&amp;quot; &amp;amp; objSystemInfo.UserName&lt;br /&gt;
   &amp;#039; mit Nachfolgender Zeile haben wir einen Zeiger auf das AD-Objekt des Benutzer&amp;#039;s damit können wir alle AD-Felder abfragen&lt;br /&gt;
   Set objBenutzer = GetObject(varQuery)&lt;br /&gt;
   &lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039;Setzen der Suchtexte&lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039;0. First Name&lt;br /&gt;
       strObject(0) = objBenutzer.givenName&lt;br /&gt;
       strReplacementText(0) = &amp;quot;xFNx&amp;quot;&lt;br /&gt;
   &amp;#039;1. Last Name&lt;br /&gt;
       strObject(1) = objBenutzer.sn&lt;br /&gt;
       strReplacementText(1) = &amp;quot;xLNx&amp;quot;&lt;br /&gt;
   &amp;#039;2. Initialien&lt;br /&gt;
       strObject(2) = objBenutzer.initials&lt;br /&gt;
       strReplacementText(2) = &amp;quot;xINx&amp;quot;&lt;br /&gt;
   &amp;#039;3. User Logon Name&lt;br /&gt;
       strObject(3) = objBenutzer.sAMAccountName&lt;br /&gt;
       strReplacementText(3) = &amp;quot;xLogonNamex&amp;quot;&lt;br /&gt;
   &amp;#039;4. Display Name&lt;br /&gt;
       strObject(4) = objBenutzer.DisplayName&lt;br /&gt;
       strReplacementText(4) = &amp;quot;xDisplayNamex&amp;quot;&lt;br /&gt;
   &amp;#039;5. Description&lt;br /&gt;
       strObject(5) = objBenutzer.Description&lt;br /&gt;
       strReplacementText(5) = &amp;quot;xDescriptionx&amp;quot;&lt;br /&gt;
   &amp;#039;6. Job Title&lt;br /&gt;
       strObject(6) = objBenutzer.Title&lt;br /&gt;
       strReplacementText(6) = &amp;quot;xJobTitlex&amp;quot;&lt;br /&gt;
   &amp;#039;7. Department&lt;br /&gt;
       strObject(7) = objBenutzer.department&lt;br /&gt;
       strReplacementText(7) = &amp;quot;xDepartmentx&amp;quot;&lt;br /&gt;
   &amp;#039;8. Company&lt;br /&gt;
       strObject(8) = objBenutzer.company&lt;br /&gt;
       strReplacementText(8) = &amp;quot;xCompanyx&amp;quot;&lt;br /&gt;
   &amp;#039;9. Office&lt;br /&gt;
       strObject(9) = objBenutzer.PhysicalDeliveryOfficeName&lt;br /&gt;
       strReplacementText(9) = &amp;quot;xOfficex&amp;quot;&lt;br /&gt;
  &amp;#039;10. Telephone Number&lt;br /&gt;
       strObject(10) = objBenutzer.telephoneNumber&lt;br /&gt;
       strReplacementText(10) = &amp;quot;xTelOfficex&amp;quot;&lt;br /&gt;
  &amp;#039;11. Home Number&lt;br /&gt;
       strObject(11) = objBenutzer.homePhone&lt;br /&gt;
       strReplacementText(11) = &amp;quot;xTelHomex&amp;quot;&lt;br /&gt;
  &amp;#039;12. Mobile Number&lt;br /&gt;
       strObject(12) = objBenutzer.mobile&lt;br /&gt;
       strReplacementText(12) = &amp;quot;xTelMobilex&amp;quot;&lt;br /&gt;
  &amp;#039;13. Fax Number&lt;br /&gt;
       strObject(13) = objBenutzer.facsimileTelephoneNumber&lt;br /&gt;
       strReplacementText(13) = &amp;quot;xTelFAXx&amp;quot;&lt;br /&gt;
  &amp;#039;14. Pager Number&lt;br /&gt;
       strObject(14) = objBenutzer.pager&lt;br /&gt;
       strReplacementText(14) = &amp;quot;xTelPagerx&amp;quot;&lt;br /&gt;
  &amp;#039;15. Email&lt;br /&gt;
       strObject(15) = objBenutzer.mail&lt;br /&gt;
       strReplacementText(15) = &amp;quot;xEMAILx&amp;quot;&lt;br /&gt;
  &amp;#039;16. Web-Page&lt;br /&gt;
       strObject(16) = objBenutzer.wWWHomepage&lt;br /&gt;
       strReplacementText(16) = &amp;quot;xWWWx&amp;quot;&lt;br /&gt;
  &amp;#039;17. Street&lt;br /&gt;
       strObject(17) = objBenutzer.streetAddress&lt;br /&gt;
       strReplacementText(17) = &amp;quot;xSTREETx&amp;quot;&lt;br /&gt;
  &amp;#039;18. P.O. Box&lt;br /&gt;
       strObject(18) = objBenutzer.postOfficeBox&lt;br /&gt;
       strReplacementText(18) = &amp;quot;xPOx&amp;quot;&lt;br /&gt;
  &amp;#039;19. Zip&lt;br /&gt;
       strObject(19) = objBenutzer.postalCode&lt;br /&gt;
       strReplacementText(19) = &amp;quot;xZIPx&amp;quot;&lt;br /&gt;
  &amp;#039;20. City&lt;br /&gt;
       strObject(20) = objBenutzer.l&lt;br /&gt;
       strReplacementText(20) = &amp;quot;xCITYx&amp;quot;&lt;br /&gt;
  &amp;#039;21. State&lt;br /&gt;
       strObject(21) = objBenutzer.st&lt;br /&gt;
       strReplacementText(21) = &amp;quot;xSTATEx&amp;quot;&lt;br /&gt;
  &amp;#039;22. Country&lt;br /&gt;
       strObject(22) = objBenutzer.CO&lt;br /&gt;
       strReplacementText(22) = &amp;quot;xCOUNTRYx&amp;quot;&lt;br /&gt;
  &amp;#039;23. IP-Telephone&lt;br /&gt;
       strObject(23) = objBenutzer.ipPhone&lt;br /&gt;
       strReplacementText(23) = &amp;quot;xTelIPx&amp;quot;&lt;br /&gt;
  &amp;#039;24. Notes&lt;br /&gt;
       strObject(24) = objBenutzer.info&lt;br /&gt;
       strReplacementText(24) = &amp;quot;xNOTESx&amp;quot;&lt;br /&gt;
  &amp;#039;25. EmployeeID&lt;br /&gt;
       strObject(25) = objBenutzer.employeeID&lt;br /&gt;
       strReplacementText(25) = &amp;quot;xEmployeeIDx&amp;quot;&lt;br /&gt;
       &lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   &amp;#039;Suchen und Ersetzen!&lt;br /&gt;
   &amp;#039;===============================================================================&lt;br /&gt;
   Application.ScreenUpdating = False&lt;br /&gt;
   For Zaehler = 0 To (AnzahlElemente - 1) Step 1&lt;br /&gt;
   &amp;#039;Einmal für jedes Schlüsselwort ....&lt;br /&gt;
       For Each oStory In ActiveDocument.StoryRanges&lt;br /&gt;
       &amp;#039;und noch einmal für jeden Dokumentenbereich&lt;br /&gt;
       &amp;#039;Sonst geht es nicht mit Kopf- und Fußzeile&lt;br /&gt;
           oStory.Find.ClearFormatting&lt;br /&gt;
           oStory.Find.Replacement.ClearFormatting&lt;br /&gt;
           With oStory.Find&lt;br /&gt;
               .Text = strReplacementText(Zaehler)&lt;br /&gt;
               .Replacement.Text = strObject(Zaehler)&lt;br /&gt;
               .Forward = True&lt;br /&gt;
               .Wrap = wdFindContinue&lt;br /&gt;
               .Format = False&lt;br /&gt;
               .MatchCase = True&lt;br /&gt;
               .MatchWholeWord = True&lt;br /&gt;
               .MatchWildcards = False&lt;br /&gt;
               .MatchSoundsLike = False&lt;br /&gt;
               .MatchAllWordForms = False&lt;br /&gt;
           End With&lt;br /&gt;
           oStory.Find.Execute Replace:=wdReplaceAll&lt;br /&gt;
           &amp;#039;Hauptbereich ist abgefrühstückt - nun die restlichen Bereiche&lt;br /&gt;
           While Not (oStory.NextStoryRange Is Nothing)&lt;br /&gt;
               Set oStory = oStory.NextStoryRange&lt;br /&gt;
               oStory.Find.ClearFormatting&lt;br /&gt;
               oStory.Find.Replacement.ClearFormatting&lt;br /&gt;
               With oStory.Find&lt;br /&gt;
                   .Text = strReplacementText(Zaehler)&lt;br /&gt;
                   .Replacement.Text = strObject(Zaehler)&lt;br /&gt;
                   .Forward = True&lt;br /&gt;
                   .Wrap = wdFindContinue&lt;br /&gt;
                   .Format = False&lt;br /&gt;
                   .MatchCase = True&lt;br /&gt;
                   .MatchWholeWord = True&lt;br /&gt;
                   .MatchWildcards = False&lt;br /&gt;
                   .MatchSoundsLike = False&lt;br /&gt;
                   .MatchAllWordForms = False&lt;br /&gt;
               End With&lt;br /&gt;
               oStory.Find.Execute Replace:=wdReplaceAll&lt;br /&gt;
           Wend&lt;br /&gt;
       Next&lt;br /&gt;
   Next Zaehler&lt;br /&gt;
   Application.ScreenUpdating = True&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Kommentare=&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz</name></author>
	</entry>
</feed>