Je rencontre le problème suivant, je fais un publipostage à partir d'une feuille calc, grâce aux conseils de bons nombres d'entre vous, tout fonctionne bien
sauf que que ma base ne prends pas les changements de suite, ils ne sont pris en compte que si je ferme le classeur puis je l ouvre à nouveau.
Dude m'a orienté sur le fait que chaque connexion "service com.sun.star.text.MailMerge",doit etre fermé, une fois le processus terminé.
Il me semble que c est ce que je fais avec la commande : "PysMailing.dispose()" mais rien n'y fait. Est ce que je l'utilise mal???
Voici mon code, merci de votre aide.
Code : Tout sélectionner
Sub EnregistreSourceODB
Dim NomSource as string
Dim Chemin as string
Dim NomBase as string
Dim Classeur as string
NomSource = "courrier_direction"
Chemin = "D:\Secretariat"
NomBase = "courrier_direction.odb"
Classeur = "courrier_direction.ods"
oContexte = createUnoService("com.sun.star.sdb.DatabaseContext")
If oContexte.hasByName(NomSource) Then
PysPublipostage(modeleEtq,cheminEtq,NomSource,"Etiquettes")
Else
oSrcODB = createUnoService("com.sun.star.sdb.DataSource")
sUrl = ConvertToURL(Chemin)
oSrcODB.DatabaseDocument.storeAsURL(sUrl & "/" & NomBase, Array())
sUrl = "sdbc:calc:" & sUrl & "/" & Classeur
oContexte.registerObject(NomSource, oSrcODB)
oSrcODB.setPropertyValue("URL", sUrl)
oSrcODB.DatabaseDocument.store()
End If
End Sub
sub PysPublipostage(PysModele as string, PysRepDest as string, PysNomSource as string, PysDonnees as string)
Dim PysMailing as Object, PysProps(), PysTrav as string, PysMod as object
Dim propFich(0) as New com.sun.star.beans.PropertyValue
'Dim oShell As Object
PysMailing=createUnoService("com.sun.star.text.MailMerge")
with PysMailing
.DataSourceName=PysNomSource
.CommandType=com.sun.star.sdb.CommandType.TABLE
.Command=PysDonnees
.SaveAsSingleFile=true
.FileNamePrefix=PysTrav
.OutputType=com.sun.star.text.MailMergeType.FILE
.DocumentURL=convertToURL(PysModele)
.OutputURL=convertToURL(PysRepDest)
.execute(PysProps())
end with
PysMailing.dispose()
if msgbox("Votre fichier étiquettes se trouve à cet emplacement :" & PysRepDest & ", Il se nomme : " & "etiquettes0" & (Chr$(13)) & _
"Voulez-vous l'ouvrir ?",4,"essai")=6 then
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(ConvertToUrl(PysRepDest + "\etiquettes0.odt"), "", 0)
end if
end sub