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
