Felder in Worddokument mit externen Daten füllen

Ich versuche, über ein externes Programm Daten an Word weiter zu geben, um damit z. B. ein Formular oder einen Brief ausfüllen zu können.

Bsp.: Ich habe eine externe Adressdatenbank (kein Excel o. ä.!) und möchte nun einer Person einen Brief schreiben. Die Adressdaten sollen nun über eine Schnittstelle an Word gesendet werden, so dass die Adressdaten im Dokument schon eingetragen sind, wenn es sich öffnet.

Ist das irgendwie möglich? Bis jetzt hab ich die Vorlagen immer im .rtf-Format gespeichert und dann den Quelltext entsprechend der Daten verändert und anschließend das Dokument geöffnet.

Mathias

HI Mathias,

ist vielleicht keine Patent-Lösung, aber wie wäre es damit:

kann dieses Programm evtl. Daten als „txt-Datei“ speichern?
Wenn ja, dann kann man dort eine „Tabelle“ anlegen, die man einfach über Word-VBA irgendwie einlesen und verarbeiten kann.

Gruß Tobias

Ja, eine .txt-Datei ist kein Problem. Nur ich kenn mich leider überhaupt nicht mit Word-VBA aus. Könntest du mir da etwas weiter helfen?

Mathias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Mathias!

Ich habe einmal eine solche Lösung gesehen:

Die Daten schreibst Du mit der Adressverwaltung in eine *.csv- bzw. *.ctv-Datei (Liste mit Trennzeichen, am besten Tabs (Code 009), weil dann die Anführungsstriche immer entfallen können.)

Die Weiterverarbeitung in Word erfolgt durch ein Serienbriefdokument:
Dazu erstellst Du eine Vorlage, die Du als „Serienbrief“ spezifizierst, ich glaube unter „Extras…“.

Die Felder ziehst Du aus der ersten Zeile der Datentabelle - die sollte die Feldnamen beinhalten.

Ob Du da in Word noch ein Autoexec-Makro brauchst, weiss ich nicht… könnte sein, z.B. um das Serien-Dokument direkt in ein Normales Dokument mit den entspr. Texten aus den Feldern zu schreiben… zuletzt dann in *.rtf.

Die ganze Sache braucht etwas Geduld und Zeit und Testen, ob das wie gewünscht zuletzt funktioniert.

CU DannyFox64

PS: Programmierkenntnisse in VBA usw. sind IMHO nicht nötig für _diese_ Lösung.

Hallo!

Ich hab das jetzt mal mit Seriendruck versucht und etwas dran herum experimentiert. Das scheint ja gut zu klappen. Das einzigste ist halt, dass ich immer noch den einen Button anklicken müsste, damit die Daten in die Felder geschrieben werden (wenn das Seriendruck-Dokument schon offen ist). Gibt es da vielleicht noch die Möglichkeit, wenn sich das Dokument öffnet, dass dann gleich die Felder mit den Daten gefüllt werden?

Mathias

Hallo Mathias,

Ich hab das jetzt mal mit Seriendruck versucht und etwas dran
herum experimentiert. Das scheint ja gut zu klappen. Das

Das freut mich!

einzigste ist halt, dass ich immer noch den einen Button
anklicken müsste, damit die Daten in die Felder geschrieben
werden (wenn das Seriendruck-Dokument schon offen ist). Gibt
es da vielleicht noch die Möglichkeit, wenn sich das Dokument
öffnet, dass dann gleich die Felder mit den Daten gefüllt
werden?

Zur Zeit arbeite ich kaum noch mit Word, aber… [wait a while] …gleich x ausprobiert: Unter den Word-Befehlen (vordefinierte Makros) gibt es eine ganze Auswahl, die mit „Seriendruck…“ anfangen, da findest Du bestimmt den richtigen. Den übernimmst Du dann als oder in einem Aufruf in ein Makro beliebigen Namens, das Du (nur) in der Seriendruck.dot erstellst. Wenn das Ausführen des Makros einwandfrei funktioniert, benennst Du es „Autoexec“, so wird es stets beim Öffnen eines Dokuments auf Basis der Vorlage für den Seriendruck[.dot] ausgeführt.

Vielleicht noch ein Tipp am Rande: die Seriendruckfelder (Anrede, Vorname Name, Adresse1 usw.) werden standardmässig so getrimmt, dass Leerzeilen im Zieldokument/Brief wegfallen, eventuell auch Leerzeichen auf 1*Space gekürzt… wenn „es“ so nicht funktioniert bei Dir, überprüfe einmal die Voreinstellungen (Extras/Optionen). TIPP: Trotzdem besteht aber immer noch das Problem, dass der Bereich für den „Adressaten/Empfänger“ unglücklich verrutscht durch z.B. sehr lange Firmen- oder Strassennamen usw. Das lässt sich zwar mit einem Textfeld lösen, besser erscheint mir aber stattdessen eine Tabelle mit einer einzelnen Tabellenzelle zu verwenden. (Formatierung: Rahmen = kein Rahmen; Spaltenbreite = (ca.) 8,0 cm; Zeilenhöhe = mindestens 4,5 cm; die Zentimeterangabe muss bei der Zeilenhöhe eingegeben werden, wird umgerechnet auf ‚Punktgrösse pt‘; die Angabe ‚mindestens‘ ist der Trick: die Tabellenzelle wächst bei mehr Text einfach mit… *g*.)
Das funktioniert bei mir prima: Alles steht immer schön im Fensterfeld des Briefkuverts.

CU DannyFox64 :smile:

Zur Zeit arbeite ich kaum noch mit Word, aber… [wait a
while] …gleich x ausprobiert: Unter den Word-Befehlen
(vordefinierte Makros) gibt es eine ganze Auswahl, die mit
„Seriendruck…“ anfangen, da findest Du bestimmt den
richtigen. Den übernimmst Du dann als oder in einem Aufruf in
ein Makro beliebigen Namens, das Du (nur) in der
Seriendruck.dot erstellst. Wenn das Ausführen des Makros
einwandfrei funktioniert, benennst Du es „Autoexec“, so wird
es stets beim Öffnen eines Dokuments auf Basis der Vorlage für
den Seriendruck[.dot] ausgeführt.

Puh, gar nicht so einfach. Also, ich hab jetzt ein Makro gefunden, z. B. „Seriendruck“ in den Word-Befehlen. Muss ich dann gleich auf „Ausführen“ gehen? Wie kann ich das dann zum Autoexec-Makro machen? Muss ich da in den Visual Basic Editor was ändern oder wie genau? Ansonsten müsst ich doch immer über Extras/Makro/Makros/„Seriendruck“/Ausführen gehen und das ist ja nicht der Sinn der Sache. Irgendwie komm ich damit noch nicht ganz klar.

Mathias

Hi Mathias!

richtigen. Den übernimmst Du dann als oder in einem Aufruf in
ein Makro beliebigen Namens, das Du (nur) in der
Seriendruck.dot erstellst. Wenn das Ausführen
des Makros einwandfrei funktioniert, benennst Du
es „Autoexec“,
so wird
es stets beim Öffnen eines Dokuments auf Basis der Vorlage für
den Seriendruck[.dot] ausgeführt.

Puh, gar nicht so einfach.

Word hat zwar (fast) „alle“ Funktionen, die man sich vorstellen kann… aber dann auch leider in einem benutzer- und entwickler-feindlichen Schema… eben ganz M$. [1]

Also, ich hab jetzt ein Makro
gefunden, z. B. „Seriendruck“ in den Word-Befehlen. Muss ich
dann gleich auf „Ausführen“ gehen?

Im Prinzip ja, damit testest Du den korrekten Makro-Ablauf… der Makro- bzw. WordBasic-Editor kann parallel geöffnet sein/bleiben.

…und wenn alles dann wie gewünscht abläuft, bearbeitest Du das Makro händisch im WordBasic-Editor…

Wie kann ich das dann zum
Autoexec-Makro machen?

…und überschreibst einfach den Namen mit:

' Autoexec()

(Im Kommentar-Kopf der Sub/Funktion, normalerweise in dunkelgrüner Schrift.)

Dann noch in der „Serienbrief.dot“ speichern. -

Muss ich da in den Visual Basic Editor
was ändern oder wie genau? Ansonsten müsst ich doch immer über
Extras/Makro/Makros/„Seriendruck“/Ausführen gehen und das ist
ja nicht der Sinn der Sache.

Nein, nur solange Du nicht weisst, ob’s funzt oder nich’!

Irgendwie komm ich damit noch
nicht ganz klar.

Aber jetzt doch…?

Wenn es beim Laden der *.dot Probleme gäben sollte, während des Öffnens bzw. Ausführens die Shift-Taste festhalten. Dadurch wird das Autoexec-Makro unterdrückt. (Funktioniert aber nur in einem Datei-öffnen-Dialog… nicht bei Drag-n-Drop aus dem Explorer!!!)

CU DannyFox64

[1] Das ist meine Meinung, nach 14 Jahren mit DOS/Windows!

Ok. (erst mal danke für deine ausführliche Antwort!)

Ich werd mal zusammenfassen:

Ich habe jetzt meine drei Seriendruckfelder erstellt und die Datei als .doc (später dann .dot) gespeichert. Dann bin ich (neuerdings) auf Extras/Makro/Aufzeichnen gegangen, hab dann Autoexec eingegeben und OK.

Darauf hin hab ich Extras/Seriendruck ausgeführt, die Quelle gewählt und die Daten importiert.

Dann hab ich bei dem Makro-Aufzeichner auf Stop gedrückt und es mir dann anschließend im Visual Basic Editor angeguckt.

Aber irgendwie funktioniert das ganz und gar nicht. Was mach ich falsch? Auch, wenn ich das Makro über die Liste (Word-Befehle) aufrufe, müsste doch dasselbe Makro bei raus kommen, oder?

Heeelp!!

Noch ein erholsames Wochenende!
Mathias

Das Autoexec-Script, was nicht funktioniert, sieht jetzt so aus:

Sub AutoExec()

’ AutoExec Makro
’ Makro aufgezeichnet am 12.10.2003

With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = „“
.MailSubject = „“
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
Application.Run MacroName:=„Seriendruck“
End Sub