Autor Beitrag
dirkil2
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130



BeitragVerfasst: Sa 28.08.04 20:43 
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.

ausblenden 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.