Bonsoir Michel,

Le 19 février 2010 09:04, Michel <[email protected]> a écrit :

>
>
> yves dutrieux a écrit :
>
>  Bonsoir Michel,
>>
>> Le 16 février 2010 09:24, Michel <[email protected]> a écrit :
>>
>>
>>
>>> Bonjour
>>> J'ai une macro qui fusionne automatiquement un publipostage à partir d'un
>>> logiciel métier INSER (gestion formation).
>>> Pas de souci avec la version 3.1.1 et précédante.
>>> Cela ne fonctionne plus avec la version 3.2.
>>> XP sp3
>>> Des pistes de changement dans le code ?
>>>
>>>
>>>
>>
>> Il faudrait qu'on dispose de ton code si possible...
>>
>>
> Bonjour
> Openoffice plante direct sans message d'erreur.
> La macro exécute une fusion, répertorie la base dans un fichier .TXT et
> fait une copie du fichier .odt dans un dossier.
>

J'ai copié ton code dans les macros Writer.
Renommé le Autoopen en autoopen1 (pour que ça démarre pas automatiquement).
J'ai ensuite ouvert un fichier texte et exécuter la macro pas-à-pas et je
tombe en erreur lors de l'enregistrement du fichier odb (dans
c:\export.txt).

Peux-tu essayer de renommer ta macro et essayer le pas-à-pas pour voir où ça
coince ?
nb : Ne connaissant pas exactement comment tu procèdes et avec quel type de
fichier, c'est pas facile de reproduire exactement ton problème.
Pourrais-tu être plus explicite à ce sujet ?
(ex: j'ouvre un fichier xyz (si possible joint que je puisse tester si pas
confidentiel), la macro s'éxécute, et doit normalement.... quoi faire ?
d'après le code, on dirait que ça crée un fichier Odb ou qq chose du genre ?
)

Merci.
Yves.


>
> Une macro autoclose
>
> Une macro autoOpen
>
> Option Explicit
>
>
> Private Sub AutoOpen()
>
>   Dim curDocument As Object '--- Document Courant
>   Dim InsInstance As Object    '--- Instance de la base de données sources
>   Dim DbcDataBase As Object    '--- base de données source
>   Dim MmgMailMerge As Object '--- objet de gestion de la fusion
>   Dim PpvInstancePrioriter(1) As New com.sun.star.beans.PropertyValue
>  '--- propriétés d'instances de base de données
>   Dim PpvDatabaseInfo(3) As New com.sun.star.beans.PropertyValue       '---
> Proriétés de la base de données
>   Dim PpvDocumentProprieter(1) As New com.sun.star.beans.PropertyValue'---
> proprités du document fusionné que l'on ouvre
>   Dim IntPos As Integer    ' compteur pour les boucles
>     Dim strFilePrefixName As String    '-- préfixe du fichier (NOM sans
> l'extension)
>   Dim strTemplateName As String    '--- Nom du  fichier modèle
>   Dim strTemplateFolder As String '--- Dossier de stockage du modèle de
> document         Dim strDestinationFolder As String '--- Répoertoire de
> destiantion
>   Dim strOutput As String    '--- Fichier de Sortie
> MODELE_DDMMYY_HHMMSS.odt
>
>   On Error GoTo Err_AutoOpen
>     curDocument = ThisComponent
>   strTemplateName = curDocument.URL '--- Récupération du nom de fichier
>     '--- s'il s'agit d'une modèle CALC on sort
>   Select Case UCase(Right(strTemplateName,3))
>       Case "ODT"             Goto Exit_AutoOpen
>   End Select
>
>   '--- Construction des différents chemin
>   For IntPos = Len(strTemplateName) To 1 Step -1
>       Select Case Mid(strTemplateName,IntPos,1)
>           Case "\","/"
>               strTemplateFolder = Left(strTemplateName,IntPos)
>               strDestinationFolder = Left(strTemplateName,IntPos) &
> "LETTRETYPE/"
>               strFilePrefixName =
> Mid(strTemplateName,IntPos+1,Len(strTemplateName)-IntPos-4)
> If FileExists("strDestinationFolder") = False Then
>                   mkdir(strTemplateFolder & "LETTRETYPE")
>               end if                 Exit For
>       End Select
>   Next
>     '--- Création de la base de données de ODB (il s'agit d'une interface
> en les fichier TEXTE et le docuement sWriter
>   DbcDataBase = createUnoService("com.sun.star.sdb.DatabaseContext")
>   Select Case    DbcDataBase.hasByName(strFilePrefixName)
>       Case True             DbcDataBase.revokeObject(strFilePrefixName)
>   End Select
>     PpvInstancePrioriter(0).Name = "Overwrite"
>   PpvInstancePrioriter(0).Value = True
>     InsInstance = DbcDataBase.createInstance()
>   InsInstance.URL = "sdbc:flat:" + strTemplateFolder
>     '--- Création des propriétés de la base de données
>   PpvDatabaseInfo(0).Name = "DecimalDelimiter"    ' symbole décimal
>   PpvDatabaseInfo(0).Value = "."
>   PpvDatabaseInfo(1).Name = "Extension"            ' extention dezs fchier
> TEXTE source
>   PpvDatabaseInfo(1).Value = "TXT"
>   PpvDatabaseInfo(2).Name = "FieldDelimiter"        ' délimiter de champs
>   PpvDatabaseInfo(2).Value = Chr(9)
>   PpvDatabaseInfo(3).Name = "StringDelimiter"        ' délimiteur des
> chaînes
>   PpvDatabaseInfo(3).Value = ""
>
>   InsInstance.Info() = PpvDatabaseInfo            ' affectation des
> propriétés
>   InsInstance.DatabaseDocument.storeAsURL(strTemplateFolder +
> strFilePrefixName + ".odb",PpvInstancePrioriter())    ' chemin de stocakge
>   DbcDataBase.registerObject(strFilePrefixName,InsInstance)
>     '--- Paramétrage de la fusion
>   MmgMailMerge = createUnoService("com.sun.star.text.MailMerge")
>           MmgMailMerge.DataSourceName = strFilePrefixName
>   MmgMailMerge.DocumentURL = strTemplateName
>   MmgMailMerge.CommandType = 0
>   MmgMailMerge.Command = strFilePrefixName
>   MmgMailMerge.OutputType = 2
>   MmgMailMerge.OutputURL = strDestinationFolder
>   strOutput = strFilePrefixName & "_" & Format(Now(),"ddmmyy\_hhmmss")
>    ' construction du nom de sorite
>   MmgMailMerge.FileNamePrefix = strOutput
>   MmgMailMerge.SaveAsSingleFile = True
>   MmgMailMerge.Execute (Array())                                    '
> rélisation de la fusion le doc estcréée
>
>   '--- Ouverture du document fusionné
> PpvDocumentProprieter(0).Name = "MacroExecutionMode"
>   PpvDocumentProprieter(0).Value = 0
>   PpvDocumentProprieter(1).Name = "AsTemplate"
>   PpvDocumentProprieter(1).Value = 0     curDocument =
> StarDesktop.LoadComponentFromURL(strDestinationFolder + strOutput + "0.odt",
> "_blank", 0, PpvDocumentProprieter())
>     ThisComponent.Close(True)                   '--- Désallocation avant
> sortie
> Exit_AutoOpen:
>
>   Set curDocument = Nothing
>   Set InsInstance = Nothing
>   Set DbcDataBase = Nothing
>   Set MmgMailMerge = Nothing
>   Set PpvInstancePrioriter(0) = Nothing
>   Set PpvInstancePrioriter(1) = Nothing
>   Set PpvDatabaseInfo(0) = Nothing
>   Set PpvDatabaseInfo(1) = Nothing
>   Set PpvDatabaseInfo(2) = Nothing
>   Set PpvDatabaseInfo(3) = Nothing
>   Set PpvDocumentProprieter(0) = Nothing
>   Set PpvDocumentProprieter(1) = Nothing
>   Exit Sub
>     '--- Erreur
> Err_AutoOpen:
>   MsgBox Err & " " & Error$ & " " & Erl
>   Resume Exit_AutoOpen
> End Sub
>
> Merci
> Michel
>
>  en +, affiche-t-il un message d'erreur ? est-ce que le code bloque à un
>> certain endroit et si oui, lequel ?
>> Le publipostage est fait à partir de quels logiciels : Writer + fichiers
>> csv/txt/ods/odb ?
>>
>> Yves
>>
>>
>>
>>
>>> Merci
>>> Michel
>>>
>>>
>>> --
>>>
>>> Soyez eco-citoyen : n'imprimez ce mail que si necessaire.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>
>
> --
>
> Soyez eco-citoyen : n'imprimez ce mail que si necessaire.
>
>


-- 
web site : http://www.molenbaix.com

Répondre à