Danke @einbeliebigername für die ausführliche Antwort / Hilfe.
Ich habe das ganze jetzt umgeschrieben.
Jetzt habe ich nur noch eine Frage: Wie kann ich mehrere Word Dateien öffnen, der neue Code öffnet Word genau 1x, ein erneuter Aufruf öffnet kein neues Word Dokument?
Delphi-Quellcode:
uses
..., Word_TLB, Office_TLB;
procedure TFormMain.PrintVorlage(Ausdrucken : Boolean);
var
WordApp : TWordApplication;
Dokument : TWordDocument;
FileName : OleVariant;
AnzahlAusdrucke : Integer;
begin
try
AnzahlAusdrucke := StrToInt(EditPrinterCopy.Text);
except
AnzahlAusdrucke := 1;
end;
FileName := Anwendungsverzeichnis + 'Vorlage\XYZ.dot';
try
WordApp := TWordApplication.Create(Self);
Dokument := TWordDocument.Create(Self);
WordApp.Connect;
WordApp.Documents.Open2000(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Dokument.ConnectTo(WordApp.ActiveDocument);
WordApp.Visible := not Ausdrucken;
with Datenmodul.UniQueryDataGrid do
begin
Dokument.FormFields.Item('Nummer').Result := FieldByName('Nummer').AsString;
Dokument.FormFields.Item('Jahreszahl').Result := FieldByName('Jahreszahl').AsString;
// ...
end;
if Ausdrucken then
begin
if not CheckBoxStandarddrucker.Checked
then WordApp.ActivePrinter := ComboBoxPrinter.Text;
Dokument.PrintOut;
Dokument.Close;
WordApp.Quit;
end;
finally
Dokument.Free;
WordApp.Free;
end;
end;