1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
| function TForm1.publipostage (LigneTotal : integer; Dot : string; Fichier, chemin : string):integer;
var
DocWord : _Document;
NewWord : _Document;
DotFilename,
DocResultat,
Pause,
SaveChanges,
Visible : OleVariant;
LigneCourante : integer;
begin
Try
SaveDialog1.Filter :='Document Word (*.doc)|*.doc';
SaveDialog1.FileName := Fichier;
SaveDialog1.Execute;
if (SaveDialog1.FileName<>'') then
Begin
SaveChanges := wdDoNotSaveChanges;
// Contient les champs de publipostage
//DotFilename :='C:\Temp\Mailing.dot';
DotFilename := Dot;
// Démarre à la premiére ligne
LigneCourante:=1;
// N'affiche pas le document
WordApplication1.Visible := False;
// On ouvre le Modéle de document concerné par le publipostage
showmessage(DotFileName);
DocWord:=WordApplication1.Documents.Open(DotFileName,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam);
{Prépare le publipostage}
With DocWord Do
With MailMerge Do
Begin
// Définit le type du document principal du publipostage
//MainDocumentType := wdFormLetters;
MainDocumentType := wdMailingLabels;
// Associe une source de données au document spécifié, qui devient alors
// le document principal, s'il ne l'était pas encore.
showmessage (chemin+Fichier);
OpenDataSource(chemin+Fichier,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
Destination := wdSendToNewDocument; // Définit la destination du résultat de la fusion
MailAsAttachment := False; // Le résultat n'est pas envoyé par mail
MailAddressFieldName := ''; // Adresse Email
MailSubject := ''; // Sujet du mail
SuppressBlankLines := True; // les lignes vides sont supprimées quand les
// champs d'un document principal
// de publipostage sont vides.
{Execute le publipostage}
{Pause
True : Word s'interrompe et affiche une boîte de dialogue de dépannage
chaque fois qu'il rencontre une erreur liée à la fusion et au publipostage.
False : consigne les erreurs dans un nouveau document.
}
Pause:=False;
// traite toutes les lignes
DataSource.ActiveRecord:= wdLastRecord;
// Récupére le nombre de ligne à traiter
LigneTotal:=DataSource.ActiveRecord;
// Se repositionne sur la premiére ligne
DataSource.ActiveRecord:= wdFirstRecord;
DataSource.FirstRecord := 1;
DataSource.LastRecord := wdLastRecord;
DocResultat := SaveDialog1.Filename;
//While LigneCourante <= LigneTotal do
//begin
//DataSource.FirstRecord := LigneCourante;
//DataSource.LastRecord := LigneCourante;
Execute(Pause);
{Rend actif le document crée par la fusion}
NewWord:=WordApplication1.ActiveDocument;
//Inc(LigneCourante);
NewWord.SaveAs(DocResultat,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam);
//end; // while
NewWord.Close(SaveChanges,EmptyParam,EmptyParam);
//DocResultat := chemin+'Resultat'+IntToStr(LigneCourante)+'.doc';
End; {With MailMerge}
{With WordDoc}
end;
Finally
DocWord.Close(SaveChanges,EmptyParam,EmptyParam);
end;
end; |
Partager