Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Exemple d’utilisation des fonctions OpenXmlWord_ dans un publipostage

Bloc de code
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

	;je récupère le nom du fichier temporaire du document final du publipostage

	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

			;je boucle sur le mot clé $suitepublipostage$ car le publipostage 

			;peut donner lui à plusieurs fois le même document mais avec des champs

			;différents

			Do

				;chercher le mot $suitepublipostage$ et remplacer le pas rien “” 

				;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 

				;on a trouvé $suitepublipostage$ et openxml à crée un point 

				;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")

				;je peut alors indiquer a openxml de remplacer ce point d’encrage 

				;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")

				;je peut alors indiquer a openxml de remplacer ce point d’encrage 

				;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")	

				;idem pour un autre fichier docx

				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

Avant le publipostage

...

Après le publipostage

image-20240709-093236.png

image-20240709-093255.png

image-20240709-093314.png

image-20240709-093322.png

image-20240709-093331.png