Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Serienbrief aus Textdatei (https://www.delphipraxis.net/47146-serienbrief-aus-textdatei.html)

Das S 7. Jun 2005 07:19


Serienbrief aus Textdatei
 
Hi,

ich möchte einen Serienbrief mit folgenden Code erstellen:

var vfilename:olevariant;
var amailmerge:Mailmerge;
var vpause:Olevariant;
var vsave:Olevariant;
begin
vfilename:=label1.Caption;
wordapplication1.Connect;
wordapplication1.Documents.OpenOld(vfilename,Empty param,Emptyparam,Emptyparam,Emptyparam,Emptyparam, Emptyparam,Emptyparam,Emptyparam,Emptyparam);
worddocument1.ConnectTo(wordapplication1.ActiveDoc ument);
wordapplication1.Visible:=true;
vpause:=true;
amailmerge:=worddocument1.MailMerge;
amailmerge.Destination:=wdsendtonewdocument;
amailmerge.Execute(vpause);
vsave:=false;
wordapplication1.Documents.Close(vsave,emptyparam, emptyparam);
worddocument1.Disconnect;
wordapplication1.Disconnect;
end;


Das Dokument wird zwar geöffnet aber es erscheint dann die Fehlermeldung "Das angeforderte Objekt ist nicht verfügbar". Diese Meldung tritt dann auf sobald er an die Zeile amailmerge:=worddocument1.mailmerge kommt. Ich habe bald den Eindruck, daß ich zu doof bin, ein Serienbrief in Word 2003 zu erstellen. Kann mir da einer weiterhelfen ?

Vielen Dank

Albi 7. Jun 2005 08:29

Re: Serienbrief aus Textdatei
 
Hallo,

schau Dir mal die ekRtf Komponente an, die echt Klasse.

Wenn es die nicht sein soll, dann hilft dir der Code hier vielleicht weiter.

Code:
WordApplication1.Disconnect;
  WordDocument1.Disconnect;
  WordApplication1.Documents.OpenOld(WordDoc, emptyParam, emptyParam, emptyParam,
                                              emptyParam, emptyParam, emptyParam,
                                              EmptyParam, emptyParam, emptyParam);
  try
  Data:= ExtractFilePath(Application.ExeName)+'\Temp\SerienTxt.txt';
  WordApplication1.ActiveDocument.MailMerge.MainDocumentType:= wdFormLetters;
  WordApplication1.ActiveDocument.MailMerge.OpenDataSource(Data, emptyParam, emptyParam, emptyParam,
                                               emptyParam, emptyParam, emptyParam,
                                               emptyParam, emptyParam, emptyParam,
                                               emptyParam, emptyParam, emptyParam,
                                               emptyParam, emptyParam, emptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  Pause:= true;
  Mail:= WordDocument1.MailMerge;
  Mail.Destination:= wdSendToNewDocument;
  Mail.Execute(Pause);
  except
  end;
  WordDocument1.Close;
  WordDocument1.Disconnect;
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  Bookmark:= 'Akz';
  if WordApplication1.ActiveDocument.Bookmarks.Exists(Bookmark) then
  begin
    R:= WordApplication1.ActiveDocument.Bookmarks.Item(Bookmark).Range;
    R.InsertAfter(Form1.QAkte.FieldByName('AAkz').AsString);
  end;
  Bookmark:= 'Datum';
  if WordApplication1.ActiveDocument.Bookmarks.Exists(Bookmark) then
  begin
    R:= WordApplication1.ActiveDocument.Bookmarks.Item(Bookmark).Range;
    R.InsertAfter(DateToStr(Now));
  end;
  Bookmark:= 'Rubrum';
  if WordApplication1.ActiveDocument.Bookmarks.Exists(Bookmark) then
  begin
    R:= WordApplication1.ActiveDocument.Bookmarks.Item(Bookmark).Range;
    R.InsertAfter(Form1.QAkte.FieldByName('ARubrum').AsString);
  end;
  Bookmark:= 'Kz';
  if WordApplication1.ActiveDocument.Bookmarks.Exists(Bookmark) then
  begin
    QUserSql('Select * From "'+DBPath+DBUserName+'" WHERE BBenutzer Like "'+BenutzerName+'"');
    R:= WordApplication1.ActiveDocument.Bookmarks.Item(Bookmark).Range;
    R.InsertAfter(Form1.QUser.FieldByName('BKz').AsString);
  end;
  WordDocument1.SaveAs(FileName);
  WordApplication1.Visible:= true;
  WordDocument1.Disconnect;
end;
Ich habe dazu die Office-Komponenten verwenden (WordDocument und WordApplication).

Ich hoffe das hilft Dir weiter.

Das S 7. Jun 2005 11:06

Re: Serienbrief aus Textdatei
 
Vielen Dank. Jetzt funktioniert es !!!!!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz