![]() |
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 |
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:
Ich habe dazu die Office-Komponenten verwenden (WordDocument und WordApplication).
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 hoffe das hilft Dir weiter. |
Re: Serienbrief aus Textdatei
Vielen Dank. Jetzt funktioniert es !!!!!!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz