...
...
...
...
do
...
...
...
...
...
...
wend
do
...
...
...
...
...
...
wend
do
...
...
...
...
...
...
wend
...
...
...
...
...
...
...
...
...
...
...
Exemple d’utilisation des fonctions OpenXmlWord_ dans un publipostage
procedure demopublipostage(preview)
1 preview n
beginp
surchargedebut ;avant de faire le publipostage on indique qu’on veut intervenir
;sur le fichier docx qui contiens le résultat du publipostage
;La fonction de publipostage va alors s’arrêter avant le fin du
;publipostage général afin d’intervenir sur le document final
ErreurOle = Office_Begin
if ErreurOle = 0
ErreurOle = Ouvre_DocMaitre(preview)
If ErreurOle = 0 ; Doc ouvert
Lignes_Data(1)
Lignes_Data(2)
Lignes_Data(3)
Office_MailingExecute(Champ_ListId,1,left(system.znomprog),"MessageOffice")
Office_MailingEnd ;Dans ce mode la fonction de publipostage ne fini pas
;totalement le traitement du fichier et rend la main
;pour que le programme diva puisse intervenir sur
;le document final avant de poursuivre la fin
;de la fonction de publipotage
Surchargefin ;a la fin du publipostage on met a jour le fichier et
;on redonne la main a la fonction de publipostage
;de yoffice
EndIf
Office_End
if Champ_ListId
ListDestroy(Champ_ListId)
endif
endif
endp
procedure surchargedebut
beginp
Office_MailingNoExecuteEnd ;je veux modifier le document final
endp
procedure surchargefin
1 fichier 260
1 trouver x = 0
1 err x = 0
Beginp
...
fichier = Office_MailingGetFile
if fichier <> " " ;s’il y a eu un problème durant le publipostage
;la fonction renvoi un nom de fichier à espace
OpenXml_Begin ;ouverture du module openxml
err = OpenXmlWord_OpenFile(left(fichier)) ;chargement du fichier docx
if err = 0
...
;peut donner lui à plusieurs fois le même document mais avec des champs
;différents
Do
...
;et crée un point d’encrage juste après le paragraphe qui
;contenait le mot clé $suitepublipostage$
trouver = OpenXmlWord_Replace("suitepublipostage","",1)
while trouver = 1
...
;d’encrage après le paragraphe qui contenait $suitepublipostage$
;je peut alors indiquer a openxml de remplacer ce point d’encrage
;par le contenu d’un fichier rtf, ce qui me redonne un nouveau point
;d’encrage juste après le texte rtf
OpenXmlWord_InsertFile("c:\divalto\ademortf.rtf")
...
;par le contenu d’une image, ce qui me redonne un nouveau point
;d’encrage juste après l’image
OpenXmlWord_InsertFile("c:\divalto\acrylique1.jpg")
...
;par le contenu d’un fichier html
;attention il faut un fichier html dans un langage html simple comme
;par exemple une liste d'articles
;et si il contiend des images , le code de ces images doit être DANS la page
;html, on ne peut pas avoir une image de type chemin windows
;ou un lien http : … ) ,
; ce qui me redonne un nouveau point d’encrage juste après le texte
;html
OpenXmlWord_InsertFile("C:\divalto\amapi_modehtml.htm")
...
OpenXmlWord_InsertFile("c:\divalto\agrmservices.docx")
;sinon je peux me servir de ce point d’encrage pour crée un
;paragraphe et mettre du texte dedans
OpenXmlWord_CreateParagraph(0,0)
;le caractère | est remplacé par un saut de ligne
OpenXmlWord_InsertText("salut|sur|3ligne");
wend
OpenXmlWord_CloseFile
OpenXmlWord_CloseFile
endif
endif
Office_MailingEndNext
Endp
Après le publipostage
...
...
...
...
...
...
...
...
...
Mais attention : cela change que la propriété du document word , mais certaines propriétés peuvent être réutilisées dans le documents, ce qui n'est pas le cas de la majorité des propriétés
par exemple ici , c'est le cas ici
...
...
...
...
...
...
...
...