Formularfelder in Word ausfüllen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
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.
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:
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.