moelle
Goto Top

Briefvorlagage.dot mit Daten aus der Active Directory füllen

Hallo,

wir haben bei uns allgemeine Briefvorlagen. Diese müssen momentan noch mit den eigenen Daten gefüllt werden (Namne, Telefonnr, Email, Fax).
Jetzt wollen wir das diese Daten automatisch beim öffnen der Briefvorlage aus der Active Directory genommen werden, so das kein User mehr diese Daten eingeben muss. Sie sind einmalig hinterlegt in der AD.

Die User melden sich mit Iihrem Benutzernamen und Passwort an unsere Domöne an.

Hat jemand eine Lösung hierfür????

ein absoluter Traum wäre wenn diese Vorlagen (Veröffentlichung SharePoint Services) auch darüber verfügbar wären???

Content-ID: 106027

Url: https://administrator.de/contentid/106027

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

napperman
napperman 14.01.2009 um 16:32:52 Uhr
Goto Top
Habe das bei uns mit einem Makro realisiert (habe ich zum Teil auch von hier)
Dieses Makro läuft nur auf einem Pfad im System, hier haben die User kein Schreibrecht. Somit wird die Datei nicht überschrieben. Jeder kann sich hier also sein eigenens Briefpapier erstellen.
Code:

Sub AutoOpen()

On Error Resume Next
Dim qQuery, objSysInfo, objuser
Dim firma, Name, EMail, Phone, Fax, web, position, Abteilung
If ThisDocument.Name = "Briefvorlage.doc" And _
ThisDocument.Path = "T:\Briefvorlage_PCC" Or _
ThisDocument.Path = "\\hm_srv02\Tausch\Briefvorlage_PCC" Or _
ThisDocument.Path = "\\HM_srv02\Tausch\Briefvorlage_PCC" Or _
ThisDocument.Path = "\\Hm_srv02\Tausch\Briefvorlage_PCC" _
Then
' Active Directory Informationen für den angemeldeten User lesen
Set objSysInfo = CreateObject("ADSystemInfo")
objSysInfo.RefreshSchemaCache
qQuery = "LDAP://" & objSysInfo.UserName
Set objuser = GetObject(qQuery)

'Variablen mit AD-Attributen füllen
firma = objuser.company
Abteilung = objuser.physicalDeliveryOfficeName
Name = objuser.firstname & " " & objuser.lastname
Phone = objuser.TelephoneNumber
Fax = objuser.facsimileTelephoneNumber
EMail = objuser.mail
web = objuser.wwwHomePage
position = objuser.Title

smsEinfügen "smsAbteilung", Abteilung
smsEinfügen "smsTel", "tel: " & Phone
smsEinfügen "smsName", Name
smsEinfügen "smsweb", web
smsEinfügen "smsUnterschrift", Name
smsEinfügen "smsUnterschriftAbteilung", Abteilung
smsEinfügen "smsEmail", EMail
End If
End Sub


Public Sub smsEinfügen(Textmarke, Variable)
' Prozedur zum Einfügen des Wertes ("Variable") an der entsprechenden Textmarke
If ActiveDocument.Bookmarks.Exists(Textmarke) = True Then
Selection.GoTo What:=wdGoToBookmark, Name:=Textmarke
Selection.TypeText Variable
End If
End Sub
Moelle
Moelle 14.01.2009 um 16:46:25 Uhr
Goto Top
Hallo,
erstmal danke für die Antowort, User sollen nichts erstellen können. Allgemeine Briefvorlage wird geöffnet und automatisch mit den Benutzerdaten gefüllt. So soll es eigentlich sein.

095341e74cae60fca425a84d4daa7121-unbenannt
napperman
napperman 14.01.2009 um 16:50:27 Uhr
Goto Top
Genauso funktioniert das dann auch. Beim öffnen (sub AutoOpen) wird gecheckt wie der aktuelle Pfad der Datei ist (sonst würde ja jedesmal aufs neue alles gefüllt werden und stünde dann doppelt und dreifach drin). Danach wird das Dokument an den gesetzten Textmarken (smsIrgendwas) mit den Daten aus dem AD gefüllt.
Moelle
Moelle 14.01.2009 um 16:52:38 Uhr
Goto Top
Wo oder wie baue ich dieses Skript in meine Briefvorlage.dot ein?
napperman
napperman 14.01.2009 um 17:00:51 Uhr
Goto Top
Klicke auf Extras dann Makros.
Hier auf Erstellen klicken.
Wechsel in der Baumstruktur links auf Projekt (Name der Datei)
Dann Microsoft Word Oblecte dann ThisDocument.
Hier fügst Du dann den Code auf der rechten Seite ein (Pfade anpassen)
Jetzt musst Du noch die Textmarken (smsAbteilung, etc) in der Worddatei setzen und formatieren.
Ich habe letzeres mit TM-Navigator gemacht. War einfacher (ist ein Pluin für Word)
Moelle
Moelle 15.01.2009 um 08:32:26 Uhr
Goto Top
Ich habe das Script über das vorhandene Script kopiert. Das ist der Pfad wo diese Datei liegt C:\Users\dm.BO\Desktop. Ich habe die Vorlage erstmal nur lokal auf den Rechner gespeichert.

Wie sieht der Pfad dann aus, und wie kann ich festlegen welche Textmarken an welchen Stellen im Dokument anzeigt.
napperman
napperman 15.01.2009 um 09:58:49 Uhr
Goto Top
Bie smsEinfügen wird folgendes gemacht:
smsEinfügen ruft die Prozedur smsEinfügen auf.
In den Anführungszeichen steht der Name der Textmarke, nach dem Komma die Variable, die Daten enthält.
Die Variblen werden weiter oben mit den Daten aus dem AD gefüttert:
Abteilung = objuser.physicalDeliveryOfficeName
Hier wird die Varible Abteilung mit dem Inhalt der Zeile Büro aus dem AD gefüllt
Moelle
Moelle 15.01.2009 um 10:28:00 Uhr
Goto Top
Meine Textmarke heißt z. B. Name1

ist der Aufbau dann: smsEinfügen "Name1", Name
Moelle
Moelle 15.01.2009 um 10:45:43 Uhr
Goto Top
So siehts im Moment aus, ich erhalte keinen Fehler, habe dies nun im Skript Editor gespeichert und habe nach Word gewechselt.

Leider passiert nichts warum ?

Sub AutoOpen()

On Error Resume Next
Dim qQuery, objSysInfo, objuser
Dim Phone, Name, web, Email
If ThisDocument.Name = "Briefvorlage.doc" And _
ThisDocument.Path = "C:\Users\dmo.BO\Desktop\" _
Then
' Active Directory Informationen für den angemeldeten User lesen
Set objSysInfo = CreateObject("ADSystemInfo")
objSysInfo.RefreshSchemaCache
qQuery = "LDAP://" & objSysInfo.UserName
Set objuser = GetObject(qQuery)

'Variablen mit AD-Attributen füllen
firma = objuser.company
Abteilung = objuser.physicalDeliveryOfficeName
Name = objuser.firstname & " " & objuser.lastname
Phone = objuser.TelephoneNumber
Fax = objuser.facsimileTelephoneNumber
Email = objuser.mail
web = objuser.wwwHomePage
position = objuser.Title

smsEinfügen "Telefon", "tel: " & Phone
smsEinfügen "Name1", Name
smsEinfügen "web", web
smsEinfügen "Name2", Name
smsEinfügen "Email", Email
End If
End Sub


Public Sub smsEinfügen(Textmarke, Variable)
' Prozedur zum Einfügen des Wertes ("Variable") an der entsprechenden Textmarke
If ActiveDocument.Bookmarks.Exists(Textmarke) = True Then
Selection.GoTo What:=wdGoToBookmark, Name:=Textmarke
Selection.TypeText Variable
End If
End Sub
napperman
napperman 15.01.2009 um 16:49:01 Uhr
Goto Top
Bei mir wollte das mit den mit Bordmitteln erstellten Textmarken zunächst auch nicht funktionieren.
Versuche mal das hier dafür:
http://www.add-in-world.com/katalog/word-textmarken/
Moelle
Moelle 15.01.2009 um 17:06:47 Uhr
Goto Top
Die Textmarken sind mit SMartToo... gesetzt, sage ich Gehe zu, zeigt er mir auch die richtigen an. Leider werden nur keine Daten in den Textmarken gefüllt und das Skript macht irgendwie nichts.

Woran liegts
napperman
napperman 16.01.2009 um 10:35:46 Uhr
Goto Top
Pfad ist richtig eingetragen? Di eDatei heißt Briefvorlage.doc oder .dot?
Moelle
Moelle 16.01.2009 um 12:15:02 Uhr
Goto Top
Hey
Der PFad ist richtig. Die Dateil ist lokal auf meinen PC gespeichert . Ich habe mich mit dmo in der Domäne BO angemeldet also C:\Users\dmo.BO\Desktop. Die Briefvorlage heißt .doc
napperman
napperman 16.01.2009 um 12:18:50 Uhr
Goto Top
kommentiere die Pfadangabe doch erstmal aus. Ebenso den Dateinamen. Dann kann man eingrenzen, ob der Fehler da liegt, oder ob ein Fehler bei Textmarken vorliegt.
Moelle
Moelle 16.01.2009 um 12:22:33 Uhr
Goto Top
Also soll ich ein Hochzeichen ' setzen oder was meinst du mit auskommentieren.
Moelle
Moelle 16.01.2009 um 12:32:50 Uhr
Goto Top
dann läuft es auf einen fEhler im IF argument.

Bin absoluter Laie in Visual Basic
napperman
napperman 16.01.2009 um 13:59:24 Uhr
Goto Top
Das if muss natürlich auch weg.
Dieser ganze kram muss erstmal weg:
If ThisDocument.Name = "Briefvorlage.doc" And _
ThisDocument.Path = "C:\Users\dmo.BO\Desktop\" _
Then
Moelle
Moelle 16.01.2009 um 15:44:49 Uhr
Goto Top
Dann funktioniert es, allerdings muss ich noch sagen EXTRAS MAKRO MAKROS und AUTOOPEN ausführen! Automatisch funktioniert es noch nicht und woher weiß er dann das er dieses Dokument nehmen muss wenn der IF THISD..... nicht mehr vorhanden ist.

Und was ist denn wenn es eine *.dot Vorlage ist und das Formular geschützt ist, dann kann ich die Makris nicht ausführen?