Home » Tipps & Tricks » COM/OLE/DDE » Word » Formularfelder in Word ausfüllen
Formularfelder in Word ausfüllen
Ab Delphi 5 Professional gibt es Komponenten, die eine OLE-Verbindung zu Word vereinfachen. Ohne sie muss man unten gezeigten Weg gehen. Im Beispiel wird ein neues Word-Dokument erstellt, das als Vorlage die Datei beispiel.doc hat. Diese enthält Formularfelder mit benannten Textmarken, die mit Daten gefüllt werden.
uses ComObj; procedure wordformular; var Word: variant; begin screen.Cursor := crHourglass; try // Es wird zuerst versucht, eine laufende Word-Instanz zu verwenden word := GetActiveOleObject('Word.Application'); except try // Läuft Word noch nicht, wird eine neue Verbindung aufgebaut Word := CreateOleObject('Word.Application'); except // Schlägt sie fehl (Word nicht installiert), gibt es eine Fehlermeldung ShowMessage('Microsoft Word kann nicht starten.'); screen.cursor := crDefault; exit; end; end; word.visible := true; Word.Documents.Add(Template:='C:beispiel.doc'); try Word.ActiveDocument.FormFields.Item('Name').Result := 'Hans Müller'; Word.ActiveDocument.FormFields.Item('Ort').Result := 'Berlin'; finally word := unassigned; screen.cursor := crDefault; end; end;
Die Eigenschaft TextInput kann verwendet werden, um einen Vorgabewert zu setzen:
var feld: OleVariant; begin feld := 'Name'; WordApplication1.ActiveDocument.FormFields.Item(Feld).TextInput.Default := 'Name (Vorgabe)'; WordApplication1.ActiveDocument.FormFields.Item(Feld).result := 'Mein Name'; end;
Durch TextInput.Default wird der Vorgabetext des Formularfelds gesetzt, und somit bleibt der Text beim Schützen/Aufheben des Schutzes der Text erhalten. Der FormField.Result zugewiesene Wert ist sonst evtl. nur von kurzer Dauer.