Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Suche VBS erweiterung für das Auslesen von AD Werten nach Office

Frage Microsoft Microsoft Office

Mitglied: TechnoX

TechnoX (Level 2) - Jetzt verbinden

06.04.2011 um 13:13 Uhr, 6277 Aufrufe, 15 Kommentare

Wie in diesem Forum:
http://www.administrator.de/index.php?content=61291#245072
Soweit so gut: klappt - ich brauche aber noch andere Werte...

Kann mir jemand bitte sagen wie die Erweiterung lautet? Bin kein Programmierer..

Ich brauche für folgende AD Einträge entsprechend Felder in Word zum Einfügen:

- Büro
- E-Mail
- Postfach
- Fax
- Rufnummer

Wie lautet hier der code? Unten der funktionierende Teil...
Set objSysInfo = CreateObject("ADSystemInfo")

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)

Set objWord = CreateObject("Word.Application")
objWord.UserName = objUser.givenName & " " & objUser.SN
objWord.UserInitials = objUser.sAMAccountName
objWord.UserAddress = objUser.Company & Chr(13) & _
objUser.streetAddress & Chr(13) & _
objUser.postalCode & " " & objUser.l & Chr(13) & _
objUser.co

objWord.Quit

Mitglied: TechnoX
06.04.2011 um 13:25 Uhr
Unter:

http://www.microsoft.com/germany/technet/datenbank/articles/600810.mspx

findet sich ein Informativer Artikel der einwenig licht ins Dunkel bringt..
Bitte warten ..
Mitglied: bastla
06.04.2011 um 13:45 Uhr
... und Yusufs Darstellung hilft sicher auch ...

Grüße
bastla
Bitte warten ..
Mitglied: TechnoX
06.04.2011 um 14:14 Uhr
Also schonmal ein Dickes danke damit hab ich 75%...

er bringt mir ne Runtime Fehlermeldung.. unterstützt das nicht blablabla.. kennst den Quack ja.

objWord.??????? = objUser.telephoneNumber
Du verstehst das Problem?

Wenn ich es wie folgt eingebe
objWord.UsertelephoneNumber = objUser.telephoneNumber

macht er folgendes - er arbeitet es ab - sucht das Objekt - lies aus schreibt ein & geht ins nächste bis zu
dieser Zeile. Da In Word scheinbar kein Objekt mit der bezeichnung "telephoneNumber" existiert wo er die daten
einfüllen kann - bricht er ab.
Wie komme ich da heran? Wo hinterlegt man den ausgelesenen Wert?

Dachte das er zuerst mit dem Befehl "objWord.UsertelephoneNumber" das Objekt automatisch erstellt - das war Fehldenken..
Bitte warten ..
Mitglied: TechnoX
06.04.2011 um 16:30 Uhr
Kann mir einer bitte mal helfen???

Ich würde gerne einfach auf die selbe Weise wie für zb. "Useradress" ein Feld haben das EMAIL heißt.
Ich will das der User sich anmeldet - das Script durchläuft - die Werte befüllt. So das eine Dot mit entsprechenden
Feldern sich automatisch je Niederlassung und User ausfüllt.

Das kann doch keine so besondere Anforderung sein....

Es klappt ja auch bei einigen Werten - aber wie scripte ich das für diese werte?

- Büro
- E-Mail
- Postfach
- Fax
- Rufnummer

Es gibt keine Vorlage & weder meine 3 Bücher mit knapp 2000 Seiten noch die Stunden des Googlens haben mich wirklich näher gebracht.
Das kann doch nicht sein das noch keiner eine Lösung dafür gefunden und geposted hat...
Bitte warten ..
Mitglied: Logan000
07.04.2011 um 12:04 Uhr
Moin Moin

Wie komme ich da heran? Wo hinterlegt man den ausgelesenen Wert?
Der Punkt ist doch das es die Eigenschaft "UsertelephoneNumber" im Word.Application nicht gibt.

Das kann doch keine so besondere Anforderung sein....
Stimmt, aber du gehst dabei etwas umständlich vor.
Anstatt diese Infos in eine Vorlage oder ein Dokument zu blasen, scheinst du zu versuchen Word zu erweitern und zu hoffen das diese infos wie duch Geisterhand in allen deinen Dokumenten auftauchen.

Starte deinen VBA Editor und schau dort in der Hilfe erstmal nach, was geht und was nicht.
Da kann man das auch gleich schön ausprobieren.

Gruß L.
Bitte warten ..
Mitglied: TechnoX
07.04.2011 um 13:18 Uhr
Ich habe weder Kenntnisse von VBA noch habe ich einen Editor. Is das erstemal das diese Anforderung für Office umgesetzt werden soll.
Hab mir teilweise nun so beholfen, das die Werte Mail, Telefon & Fax in das Feld Useradress übertragen werden.
Somit muss schonmal das nicht für jedes Dokument extra getippt werden. Und die Urspünglichen Daten bleiben im Richtigen Feld unangetastet.

Trotzdem - es gibt Felder zur Auswahl die leer stehen & die ich missbrauchen kann. Felder auf die keiner in absehbarer Zeit zu greift - nämlich die Dokument Eigenschaften. Wie Anmerkungen oder Benutzer etz. Nur wie kann ich diese befüllen?

objWord.UserAddress
objWord.UserInitials
objWord.UserName

..sind klar. aber es handelt sich scheinbar nicht um ein ObjWord. sondern um etwas anderes. Nur wie heist das???
Bitte warten ..
Mitglied: TechnoX
07.04.2011 um 13:23 Uhr
Ach ja - eine der Fehlermeldungen tauchte auf weil das übergabe Feld keine Daten enthielt. Das führte zu einem Übergabe problem. .....gut zu wissen...
Bitte warten ..
Mitglied: bastla
07.04.2011 um 15:53 Uhr
Hallo TechnoX!
Ich habe weder Kenntnisse von VBA noch habe ich einen Editor.
Ersteres kannst Du besser beurteilen, letzteres lässt sich mit einem einfachen Alt + F11 (in Word) falsifizieren ...
Im VBA-Editor kannst Du nach einem Doppelklick auf "ThisDocument" (im "Projekt-Explorer" links) folgenden Code in das Codefenster einfügen und ausführen:
01.
Sub ShowProperties() 
02.
On Error Resume Next 
03.
For Each Property In ActiveDocument.BuiltInDocumentProperties 
04.
    Output = Output & vbCrLf & Property.Name 
05.
    Output = Output & vbTab & Property.Value 
06.
Next 
07.
MsgBox Output 
08.
End Sub
Damit erhältst Du eine Übersicht über die standardmäßig ("BuiltIn") vorhandenen Eigenschaften und, sofern vorhanden, deren aktuellen Wert.

Mehr dazu zB hier ...

Grüße
bastla
Bitte warten ..
Mitglied: TechnoX
08.04.2011 um 13:41 Uhr
Infos:
Es gibt 3 Speicher in die wir Daten auffüllen können:

1) UserName
2) Initials
3) UserAdress

Diese lassen sich per VBS Script befüllen.
Das Script beginnt hiermit:

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
Set objWord = CreateObject("Word.Application")

Was das bedeutet kann ich so konkret nicht sagen - ich vermute das hier Auslese Pfade und aktionen definiert werden.

objWord.UserName = objUser.givenName & " " & objUser.SN
objWord.UserInitials = objUser.sAMAccountName
objWord.UserAddress = ........


über objWord. wird der Speicherplatz in Word angesteuert. dh diese 3 Speicherplätze:


objWord.UserName zu finden unter Word2007 unter Wordoptionen Benutzername
objWord.UserInitials zu finden unter Word2007 unter Wordoptionen Initialien
objWord.UserAddress zu finden unter Word2007 unter Wordoptionen[erweitert\Allgemein] Postanschrift

Diese exisieren als reale Felder & können Problemlos auch von Hand eingefügt werden.

objUser. = definiert das zuvor mit dem "Set objUser = GetObject("LDAP://" & strUser)" definierte Suchziel.
givenName = ist der LDAP Name des Feldes welches den Wert beinhaltet. In dem Fall den Profilname.
& " " = fügt eine Leerstelle ein oder einen Text je nach dem.
& = sehr wichtig für Werte Verknüpfungen.
& Chr(13) & _ = bewirkt einen Zeilensprung/nächste Zeile. Dient zur Formatierung.


Die Werte sind schon mit der entsprechenden & Anweisung angeben.

Folgende zeile:

objWord.UserName = objUser.givenName & " " & objUser.SN

Liest sich so:
Schaue unter dem UserProfil in der AD und füge diese Werte ein = Name des User und eine Leerstelle und Nachname des User

Nehmen wir uns jetzt den Restlichen Code vor, das is ein bissle komplizierer.

objWord.UserAddress = "Ihr/e Ansprechpartner/in:" & Chr(13) & _
objUser.givenName & " " & objUser.SN & Chr(13) & _
"Tel.: " & objUser.telephoneNumber & Chr(13) & _
"Fax "& objUser.facsimileTelephoneNumber & Chr(13) & _
objUser.Mail


Der Reservierte Speicherbereich objWord.UserAddress ist in diesem Beispiel noch mit zusätzlichen Informationen ergänzt worden.
Der übergebene Text der sich darin wieder findet sieht so aus:

Ihr/e Ansprechpartner/in:
Anreas Mustermann
Tel.: +49(123)1234-123
Fax +49(123)1234-123
a.mustermann@Mustermann.de

Gefüllt wird es über die Werte in der Aktiv Direktory. Ich will noch etwas auf die "objuser." eingehen.
Wir kennen das ObjWord.UserAdress und haben nun das Objuser.xxxxxx.
Beispiele für wären:

Objuser.sn
Objuser.telephoneNumber
objUser.facsimileTelephoneNumber
objUser.givenName
usw.

Die Bezeichnungen der Ldap-Ziele sind hier wunderbar nieder geschrieben:
http://blog.dikmenoglu.de/Die+Active+DirectoryAttribute+Hinter+Den+Feld ...


Mögliche Fehler


1) Der erste Fehler den ich gemacht habe war zu hoffen das jemand hierauf so nett ist und eine Effektive Hilfe bietet.
Das Problem - selbst Microsoft, die diese Methode durchaus kennen, geben nur spärliche Informationen darüber Preis.
Es geht so Weit das sie sogar eine typische "für Fehler & Schäden übernehmen wir keine Haftung" Meldung gleich mit geben.

2) Kompetente Hilfe zu erwarten, die einen in die Lage versetzt sich selbstständig weiter zu hangeln.
Insb. wenn man in Foren dies bezüglich als absoluter Neuling auf dem Gebiet nichts über VBS Programmierung
und LDAP Abfragen via VBS ist.... scheint plötzlich endloses Schweigen im Walde zu herrschen.

3) Scripting & Syntax Fehler aufgrund von nicht vorhandenen VBS Kenntnissen.

4) Übernahme eines Textes dessen zusammensetzung man nicht wirklich kennt. Kann zu falschen Annahmen führen.
Darum auch dieses kleine Tutorial.

5) Eine Zeile darf nicht mit einem & beginnen.

6) Office hat dem "objWord.UserAddress" nur einen begrenzten Speicherplatz gewährt. Dh. ich konnte nicht die
Vollständige Adresse sammt Telefon, Fax, Email, User mit einem Zusatztext und Abschnitt einfügen:

Name der Firma / Niederlassung GmbH etz.
Strasse.Nr
Postleitzahl Ort

Ihr/e Ansprechpartner/in:
Anreas Mustermann
Tel.: +49(123)1234-123
Fax +49(123)1234-123
a.mustermann@Mustermann.de

Diese Formatierung wäre zwar möglich - wird aber leider wegen der Begrenzung bei "Fax +" abgeschnitten. Möglich
wäre:

Name der Firma / Niederlassung GmbH etz.

Ihr/e Ansprechpartner/in:
Anreas Mustermann
Tel.: +49(123)1234-123
Fax +49(123)1234-123
a.mustermann@Mustermann.de


Hier der Quelltext des VBS-scripts zu dieser oben genannten Darstellung:


Set objSysInfo = CreateObject("ADSystemInfo")

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
Set objWord = CreateObject("Word.Application")

objWord.UserName = objUser.givenName & " " & objUser.SN

objWord.UserInitials = objUser.sAMAccountName

objWord.UserAddress = objUser.streetAddress & Chr(13) & _
Chr(13) & _
"Ihr/e Ansprechpartner/in:" & Chr(13) & _
objUser.givenName & " " & objUser.SN & Chr(13) & _
"Tel.: " & objUser.telephoneNumber & Chr(13) & _
"Fax "& objUser.facsimileTelephoneNumber & Chr(13) & _
objUser.Mail

objWord.Quit


Wer genau hinsieht:

objWord.UserAddress = objUser.streetAddress & Chr(13) & _
Chr(13) & _

..erkennt das hier der Bereich des Profils abgefragt wird in dem die Straßen Adressdaten eingegeben werden können.
Wer also die gesammte Tipperei etwas modifizieren will ohne sich auf verschiedene Felder zu beziehen. der kann auch
in diesem Feld in dem Userprofil zb. folgendes eintragen:


Name der Firma / Niederlassung GmbH etz.

Ihr/e Ansprechpartner/in:
Anreas Mustermann
Tel.: +49(123)1234-123
Fax +49(123)1234-123
a.mustermann@Mustermann.de


Es würde dann aber so aus sehen:


Set objSysInfo = CreateObject("ADSystemInfo")

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
Set objWord = CreateObject("Word.Application")

objWord.UserName = objUser.givenName & " " & objUser.SN

objWord.UserInitials = objUser.sAMAccountName

objWord.UserAddress = objUser.streetAddress

objWord.Quit


Dieser Weg hat aber den Nachteil das man sich nicht auf die eh vorhandenen Werte bezieht. Und man das Feld der "Strasse/Adresse"
in dem AD Benutzerprofil mit Daten belegt die u.U von dem eigentlichen Sinn vollkommen abweichen. Schließlich könnte man auch
"Willst du mich Heiraten" oder irgend einen anderen Text hier ablegen. Solange es nicht zu lang ist und die Speicherbegrenzung
des "objWord.UserAddress" erreicht.

Leider habe ich keinen Weg gefunden noch andere Speicher zu befüllen. Sprich - theoretisch gibt es in den Dokumenteigenschaften
Felder für "Author" etz. die man bestimmt ähnlich befüllen kann. Ich vermute aber das dies per Makro passieren muss.
Das man das Makro ausführt - dies die Abfrage durchführt - und ins Dokument einfügt. So könnte man über ein Makro automatisch
die Dokumenten Eigentschaften befüllen (Firma/Niederlassung/Author). Das aber ist wirklich nur eine Vermutung.
Bitte warten ..
Mitglied: bastla
08.04.2011 um 14:56 Uhr
Hallo TechnoX!

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
Set objWord = CreateObject("Word.Application")

Was das bedeutet kann ich so konkret nicht sagen - ich vermute das hier Auslese Pfade und aktionen definiert werden.
Die ersten beiden Zeilen dienen dazu, das Objekt des angemeldeten Benutzers zu erhalten, um die Werte seiner Eigenschaften dann aus dem AD (konkret: aus seinen Kontoinformationen, nicht aus dem Profil) auslesen zu können.

Mit der dritten Zeile wird ein "Word"-Objekt erzeugt (also per Script "Word" gestartet), um dort Werte für Eigenschaften setzen zu können.
Nur kurz zu
Leider habe ich keinen Weg gefunden noch andere Speicher zu befüllen. Sprich - theoretisch gibt es in den Dokumenteigenschaften
Felder für "Author" etz. die man bestimmt ähnlich befüllen kann. Ich vermute aber das dies per Makro passieren muss.
Hast du meinen letzten Kommentar gelesen, bist du dem Link darin gefolgt?

"Per Makro" arbeitest Du übrigens eigentlich schon die ganze Zeit - in Word sind "Makros" VBA-Scripts
Eine Zeilenschaltung wird in Windows üblicher Weise nicht per "Chr(13)", sondern mit der VB-Konstante "vbCrLf" eingefügt.

Grüße
bastla

P.S.: Mit "Code"-Formatierung sähe Deine Zusammenfassung noch besser aus ...
Bitte warten ..
Mitglied: TechnoX
08.04.2011 um 15:09 Uhr
Nein - weil ich das noch nicht gesehen hatte. Hab den text zuvor als TXT getippt & recht schnell posten müssen da ich grad etwas unter Zeitdruck stehe.
Bitte warten ..
Mitglied: bastla
08.04.2011 um 15:50 Uhr
Hallo TechnoX!

Nur keinen Stress ...

Grüße
Bitte warten ..
Mitglied: TechnoX
08.04.2011 um 16:01 Uhr
Sag das mal den Leuden die hier anrufen... da darf ich Zaubern. Kann noch so sehr mit meinem Woodoo und Teufelsbeschwörungen arbeiten und kaum dreh ich mich um verlangt man von mir allwissend zu sein. Ach ja - Zerreißen sollte ich mich auch noch können & eine Urlaubsvertretung darf ich auch noch spielen.
Und weil alles noch nicht so super is - Spielt grade unsere neue Firewall auch noch mit rein, denn sie lässt alle 2 std das System abschmieren.. wesshalb dann natürlich das Telefon wieder schellt & der der es eingerichtet hat - hat, man ahnt es: Urlaub.
Und zu allem Überfluss darf ich noch dieses Office Zeug einrichten mich um den Antivierenschutz, die Einrichtung des Wsus, Einrichtung der Software paketverteilung & den alltäglichen Wehwehchen ala HILFE MEIN OOUTLOOK LEGT EIER kümmern...

Hab langsam die Schnauze echt voll. Bekomme für den Kack echt zuwenig Kohle..
Bitte warten ..
Mitglied: Biber
08.04.2011 um 16:34 Uhr
[OT] @TechnoX

Ich sach ma' so...

Ist doch immer noch besser als richtig arbeiten zu müssen.

Ausserdem ist der Freitag doch schon in siebeneinhalb Stunden wieder rum, also fast geschafft.
Und am bald ist auch der 1. Mai -"Tag der Arbeit" und da haben wir alle schon wieder einen Extra-Tag frei.
Den ganzen Sonntag

In der Gewissheit, dich aufgemuntert zu haben.

Schönes Wochenende
Biber
[/OT]
Bitte warten ..
Mitglied: TechnoX
08.04.2011 um 19:36 Uhr
Danke für den Versuch & ebenfalls ein schönes Wochenende
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Windows Server
Schemaerweiterung - Office 365 - Exchange Online mit lokalem AD

Frage von chb1982 zum Thema Windows Server ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...