Ich möchte von Delphi aus die MERGEFIELDs eines vorhandenen Word Templates füllen. Mein erster Gedanke war: OLE Automation. Das scheint auch die richtige Idee zu sein, nur an der Umsetzung hapert es noch ein wenig.
Was habe ich bislang gemacht? Nun, ich habe von Word selbst aus ein Dokument erstellt und über das Menü
Insert / Field... / MergeField ein neues Feld hinzugefügt. Dem Feld habe ich den Namen
titel gegeben.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Button2Click(Sender: TObject); var FileName, name, VarName, VarValue: OleVariant; i, cnt: Integer; doc: TWordDocument; begin FileName := 'I:\tmp\test.doc';
wordApp.Connect; wordApp.Documents.OpenOld(FileName,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
wordApp.Visible := true;
cnt := wordApp.ActiveDocument.MailMerge.Fields.Count; // richtig??? for i:=0 to cnt-1 do begin // und was mache ich hier? end; end; |
Doch wie finde ich jetzt mein MergeField, damit ich einen Text einsetzen kann?
Wenn ich
wordApp.ActiveDocument.MailMerge.Fields.Item(Index: Integer) verwenden soll, dann muss ich den Index kennen. Wie ist der in meinem Fall?
Ich könnte über alle iterieren, aber welcher ist der richtige? Es gibt da ein
wordApp.ActiveDocument.MailMerge.Fields.Item(4).type_ aber auf was frage ich das ab?
Oder muss ich über
wordApp.ActiveDocument.Fields gehen? Aber wie genau geht es dann weiter?
Ich denke, das sollten für einen erfahrenen OLE Automation Programmierer ganz triviale Fragen sein, aber mir bereiten sie Kopfzerbrechen.
Also, wer hilft mir weiter?
Ich weiß, dass es ein Tutorial auf
www.delphi-forum.de/viewtopic.php?t=152, gibt, aber das beantwortet meine Fragen nicht.