Zum Inhalt springen

Word Vorlagen mit automatischen Namen und Aktualisierungen


r3m4

Empfohlene Beiträge

Guten Tag,

wir haben ein kleines Problem in letzter Zeit.

Folgende Aufgabenstellung bereitet uns Kopfschmerzen und wir sind gespannt ob hier ein paar Cracks dabei sind, die uns helfen möchten und die Antwort wissen.

Wir haben für Geschäftsbriefe national, international, Faxe national und international jeweils eigene .doc Vorlagen, mit deren Hilfe die jeweilige Aufgabe schnell erledigt werden kann. Diese liegen schreibgeschützt auf dem Server und können vom User nicht geändert werden.

Diese wird über unser CRM angesprochen und füllt automatisch die Vorlage mit dem Namen des Absenders.

Wir möchten nun jedoch im Word einige Schaltflächen, durch welche man direkten Zugriff auf die jeweilige Vorlage hat.

Das haben wir durch Hyperlinks realisiert. Die jeweiligen Daten des Users haben wir in den Eigenen Dateien eines jeden abgelegt. In Form einer Textdatei und nach immer dem selben Aufbau.

Nun die Frage, wie würdet ihr das Problem am einfachsten bewerkstelligen? Wir sind zuerst den Weg gegangen, dass wir alle Felder innehalb der Dokumente mit einem VBA-Skript abfragen lassen, was uns jedoch vor die Problematik stellt, dass wir keine Signatur für unser Makro haben und uns dadurch einige Fehlermeldungen erscheinen, die sich nicht so ohne weiteres beheben lassen.

Sollte jemand von euch eine komplett andere Idee haben, als die Felder mit Bezug auf die Textdatei und den jeweiligen Datensatz darin auslesen zu lassen und mithilfe eines Makros zu aktualisieren.

Ich bedanke mich schonmal an alle die überhaupt diesen langen Text versuchen zu lesen und zu verstehen. Ist mir klar, dass wenn man die Sache nicht vor sich hat, das alles recht schwer ist zu vestehen.

:uli

Bearbeitet von r3m4
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem besteht einfach darin, dass wir kein Sicherheitszertifikat haben um das Makro damit auszustatten.

Da wir aber gerne weiterhin auf den Arbeitsstationen die Standardsicherheit für Makros auf Hoch beibehalten würden, wird die Frage nach der Aktivierung des Makros gar nicht gestellt.

Es wäre für uns kein Problem, die komplette Lösung wieder über Bord zu werfen, falls jemand was tolles weiß ^^

Falls jemand nen Trick kennt wie man Felder im kompletten Dokument (inkl. in Textfeldern) aktualiasiert ohne, dass man ein Makro benötigt, wäre das natürlich der letzte Durchbruch.

Ich schreibe hier mal unser VBA Skript das wir für die Aktualisierung benutzen. Vielleicht entdeckt der ein oder andere dort Verbesserungsmöglichkeiten:

Sub AutoOpen()

  Application.ScreenUpdating = False

  ActiveDocument.Repaginate

  For Each teil In ActiveDocument.StoryRanges

    teil.Fields.Update

    While Not (teil.NextStoryRange Is Nothing)

      Set teil = teil.NextStoryRange

      teil.Fields.Update

    Wend

  Next teil

  Application.ScreenUpdating = True

End Sub

Danke für eure Mühe.

Grüße,

Jochen :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, das ist auch der Weg den wir gehen wollten.

Wir haben bis jetzt noch keine Lösung gefunden das Makro so zu verteilen, dass die User letzten Endes keine Schritte mehr machen müssen um das ganze zum laufen zu bekommen.

Die Sache mit den vertrauenswürdigen Signaturen und so muss ja dann doch jeder User für sich nochmal einrichten oder?

Das soll jetzt nicht abwertend klingen aber manche sind damit nicht so vertraut, dass ich ihnen diese Schritte zutraue und andere haben schlichtweg keinen Elan dafür ^^

Aber falls du einen Weg kennst, das Zertifikat so zu verteilen, dass die Arbeitsstationen die jeweiligen Makros dann ausführen, ohne das der User sich das Zertifikat als Trusted hinterlegen muss wäre das natürlich genial!

Grüße

Jochen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Über "Digitales Zertifikat für VBA-Projekt" (MS Office Tools) kannst du ein Zertifikat für deine Makros erstellen. In dem VBA-Projekt über Extras | Digitale Signatur das Makro signieren.

Das Zertifikat kannst du dann über den Zertifikatsmanager im Internet Explorer exportieren. Was ich dir nicht sagen kann, ist wie du das Zertifikat automatisiert verteilen kannst. Mein Ansatz wäre entweder über ein CLI-Skript oder über den entsprechenden Windows-Dienst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Den betreffen VBA-Code als Word Add-In (*.DOT) von einem Netzlaufwerk als Workgroup-Template laden, kann via Login-Skript in der Registy umgebogen werden. Es kommen keine Macro-Sicherheitswarnungen und kann recht einfach verteilt werden.

Wenn ich dich richtig verstanden habe geht es um einen eigenen Menüpunkt in Word, nicht um das Updaten von Formular-Feldern?

Gruss,

tester2k5

Link zu diesem Kommentar
Auf anderen Seiten teilen

Den betreffen VBA-Code als Word Add-In (*.DOT) von einem Netzlaufwerk als Workgroup-Template laden, kann via Login-Skript in der Registy umgebogen werden. Es kommen keine Macro-Sicherheitswarnungen und kann recht einfach verteilt werden.

Wenn ich dich richtig verstanden habe geht es um einen eigenen Menüpunkt in Word, nicht um das Updaten von Formular-Feldern?

Gruss,

tester2k5

Öhm sorry, vielleicht hab ich das ein wenig zu umständlich geschrieben ^^

Also die .dot haben wir bereits erstellt und können diese auch ohne Probleme verteilen, darum geht es also nicht.

Unser einziges Probleme ist wirklich nur die Aktualisierung.

Es soll so ablaufen:

-.dot lokal wird geladen mit den Menüpunkten

-User will einen Brief schreiben und klickt auf den Link

-Auf Server abgelegtes .doc öffnet sich. In dieser Datei sind Felder enthalten, die auf die benutzer.txt zeigen, die wir bei jedem User in seinem Netzlaufwerk erstellt haben. Umständlich aber sollte funktionieren.

-Alle Felder im geöffneten .doc aktualisieren sich. Auch diejenigen, die sich in Textboxen befinden und somit nicht beim normalen F8 drücken eingeschlossen sind. Dadurch wird automatisch Zeichnungsberechtigung, Name, Mail und dergleichen in den Brief eingetragen.

Sinn davon ist einfach, dass jeder User egal wo er sich anmeldet in der Firma durch einen klick auf den Link in der normal.dot einen Brief schreiben kann, ohne extra seinen Namen und dergleichen eintragen zu müssen.

Hoffe, dass ich jetzt alles richtig und verständnissvoll erklärt habe.

Falls ihr noch fragen habt, stellt sie ruhig. Ich bin froh, dass sich jemand dafür interessiert und bereit ist mir zu helfen.

Danke euch,

Jochen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Er meinte aber eine weitere Word-Datei (.doc), die nur(!) das eigentliche Makro enthält und nicht deine Vorlage zum Erstellen des Dokuments. Diese .dot-Datei soll dann über das Arbeitsgruppen-Vorlagenverzeichnis automatisch beim Öffnen von Word auf den Clients eingebunden werden.

Bitte keine Vollzitierungen, es ist ja sichtbar, worauf sich deine Antwort bezieht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein aktuelles Problem ist die Macro-Security:

Die du über ein Sicherheitszertifikat ausschalten kannst, das du dir auch selbst erstellen kannst (SelfCert). Es muss nur auf allen Clients importiert werden...

Oder eben (und das ist einfacher) den VBA-Code zur Aktualisierung in einer Seperaten Word-Datei und diese als Word Add-In zu laden. Auch hier kann es beim Laden von einem beliebigen Pfad zu einer Sicherheitswarnung kommen, nicht aber wenn es im Word Startup-Ordner lokal oder dem Workgroup-Template-Ordner liegt. Den du ja auf auf einen Netzwerkpfad umbiegen kannst.

Gruss,

Karsten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, das wär ja super wenn das so funktioniert.

Hab allerdings keinerlei Plan von irgendwelchen Add Ins und werd mich da erstmal zurechtfinden versuchen.

Bis dato bedanke ich mich für eure schnelle Hilfe und komme auf euch zurück, wenn ich an einem weiteren aussichtslosen Punkt angelangt bin :)

Grüße und einen schönen Restarbeitstag!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wow danke, also ich hab das jetzt so gemacht wie ihr mir das beschrieben habt und es scheint wirklich einwandfrei zu funktionieren!

Ist ja echt klasse, so können wir auch an unserer Sicherheitsstufe hoch festhalten.

Ich danke euch allen für die schnelle Mithilfe und die Geduld mit mir.:uli

Grüße,

Jochen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry kann meinen Beitrag nicht editieren daher hier noch eine abschließende Frage:

Wir wollen die "Datenbank" Benutzer.txt im jeweiligen Vorlagenverzeichniss des Users verteilen. Hierzu haben wir dann natürlich keine Lust bei jedem den Pfad anzupassen, sonst wäre der ganze Sinn der Aktion hinfällig.

Wie gebe ich nun die Variable an, dass er die jeweiligen Daten automatisch aus dem Anwendungsdatenverzeichniss zieht?

So sieht das Teil normal aus:

DATABASE  \d "C:\\Dokumente und Einstellungen\\***\\Anwendungsdaten\\Microsoft\\Vorlagen\\benutzer.txt" \c "" \s "SELECT Zeichnungsberechtigung FROM C:\\Dokumente und Einstellungen\\***\\Anwendungsdaten\\Microsoft\\Vorlagen\\benutzer.txt" 
Wie muss ich diese nun umschreiben, dass er den Anwendungsdatenpfad als Variable erkennt? So war meine Idee, es funktioniert jedoch nicht ^^:
DATABASE  \d "%userappdata%\\Microsoft\\Vorlagen\\benutzer.txt" \c "" \s "SELECT Zeichnungsberechtigung FROM %userappdata%\\Microsoft\\Vorlagen\\benutzer.txt" 

Ich denke, dass da nur ein doofer Dreher oder dergleichen drin ist und ihr mir das bestimmt ohne Probleme aus dem Stehgreif korrigiert ^^ :bimei

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja die Variable war mich auch bekannt, bezieht sich doch aber meines Wissens nur auf den Anwendungsdaten Ordner aller Benutzer oder?

Wir brauchen aber die Vorlagen welche sich im jeweiligen Anwendungsdatenpfad des angemeldeten Users befinden.

Sonst könnte ich das ganze ja auch ohne Variable lösen, wenn der Pfad statisch bleibt.

Danke dir, denke und hoffe du wirst mir das letzte Quentchen noch erklären ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja die Variable war mich auch bekannt, bezieht sich doch aber meines Wissens nur auf den Anwendungsdaten Ordner aller Benutzer oder?

Nein, der Anwendungsdatenordner aller Anwender ist immer der selbe (C:\Dokumente und Einstellungen\All Users\Anwendungsdaten). Dafür braucht man keine Variable.

Schau dir den Wert der Variable an, dann siehst du es.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm das scheint er wohl bei Word einfach nicht nehmen zu wollen. Muss ich mir etwas anderes einfallen lassen.

Wenn ich die Abfrage wie folgt gestalte, findet er ums verrecken die Datenquelle nicht. Weder mit einfachen Backslash noch mit doppelten, mit und ohne Anführungszeichen.

Ich bekomm hier echt noch nen Heulkrampf ^^ :P

DATABASE  \d "%APPDATA%\\Microsoft\\Vorlagen\\benutzer.txt" \c "" \s "SELECT Zeichnungsberechtigung FROM %APPDATA%\\Microsoft\\Vorlagen\\benutzer.txt" \t "1" 

Hat jemand noch ne Idee für mich? Ich glaube ich bin der einzige, der sowas versucht, denn im Netz ist sehr sehr wenig zu finden mit den Datenbanken in Word.

Grüße

Jochen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey jetzt werd mal nicht gemein ;-) Ich hab es ja auch nur als Datenquelle bezeichnet und nicht als Datenbank :-)

Ich hab das ganze aber auch schon mithilfe einer .xls versucht, jedoch keinen wirklichen Vorteil daraus ziehen können. Mit ner SQL Datenbank würde das ganze ja dann nicht mehr offline laufen oder?

Das ganze steht ja nicht in nem VBA Code drin, der ist nach wie vor unverändert wie auf der vorherigen Seite zu finden.

Den Code den ich gepostet habe bezieht sich nur auf das Feld, worin sich die "Abfrage" befindet. Lasse ich dort die Funktion nicht anzeigen, steht der Code wie oben geschrieben im Feld.

Falls du eine komplett andere Lösung im Kopf hast die du mir zutraust umzusetzen, wär ich natürlich daran interessiert :-)

Danke für die ausdauernde Unterstützung von dir :-)

Grüße

Jochen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit ner SQL Datenbank würde das ganze ja dann nicht mehr offline laufen oder?

Ja, solange der SQL-Server nicht auf localhost läuft.

Den Code den ich gepostet habe bezieht sich nur auf das Feld, worin sich die "Abfrage" befindet. Lasse ich dort die Funktion nicht anzeigen, steht der Code wie oben geschrieben im Feld.

Funktioniert bei mir auch nicht. Sieht so aus, als wenn die Feldfunktionen keine Windows-Variablen möchte.

Warum muss die Datendatei in das %APPDATA%-Verzeichnis?

Ich könnte mir auch vorstellen eine Accessdatei für alle Mitarbeiter zu erstellen die irgendwo auf der Platte liegt und die über die Feldfunktionen mittels ODBC angesprochen werden. Du könntest dann die Accessdatei mit einem Passwort schützen und das in der ODBC-Verbindung hinterlegen.

Das ist aber alles eher eine Frickellösung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...