[Writer] récupération de macro Open Office pour Libre Office

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
mdelobel
Fraîchement OOthentifié
Messages : 8
Inscription : 24 août 2009 21:41

[Writer] récupération de macro Open Office pour Libre Office

Message par mdelobel »

Bonjour,

Il y a 3 ans maintenant, j'étais parvenu grâce à votre aide à mettre au point une macro pour convertir des fichiers word en pdf via le writer d'OpenOffice.

Voir le sujet ici : http://forum.openoffice.org/fr/forum/vi ... =8&t=18041

Or depuis quelques jours, j'ai installé LibreOffice Version 3.6.3.2 (Build ID: 58f22d5). J'ai récupéré ma macro en copiant tout simplement le code que voici ci dessous :

Code : Tout sélectionner

sub acConvDoc2Pdf()
dim oDoc as object
dim rep1 as string, rep2 as string
dim fic1 as string, nomFic as string
dim fic2 as string
dim cptFic as long
dim tArgs(0) as new com.sun.star.beans.PropertyValue
const TYPEDOC = "doc"

   rep1 = "C:\Documents and Settings\ACGest\Mes documents\Actif\Dubus Gestion\Gestion\ComptesRendus\ConvPDF"
   rep2  = "C:\Documents and Settings\ACGest\Mes documents\Actif\Dubus Gestion\Gestion\ComptesRendus\PDF"
   
   cptFic = 0
   nomFic = dir(rep1 & getPathSeparator &  "*." & TYPEDOC)
   if nomFic = "" then
      print "Aucun fichier """ & TYPEDOC & """ dans ce répertoire"
      exit sub
   end if
   
   Do While nomFic <> ""
      cptFic = cptFic + 1
      fic1 = rep1 & getPathSeparator & nomFic
      
      tArgs(0).Name  = "Hidden"
      tArgs(0).Value = True
   
      ' msgBox("Ouverture cachée de" & chr(13) & """" & fic1 & """"
      
      oDoc = StarDesktop.loadComponentFromURL(_
         ConvertToUrl(fic1), "_blank", 0, tArgs)

      
      fic2 = rep2 & getPathSeparator _
         & left(nomFic, Len(nomFic) - 4 ) & ".pdf"

      tArgs(0).Name  = "FilterName"
      tArgs(0).Value = "writer_pdf_Export"
      
      oDoc.storeToURL(ConvertToUrl(fic2), tArgs)
      oDoc.close(true)
      ' print "doc refermé"

      nomFic = Dir
   loop
   print "Conversion terminée"
end sub

sub Main
   oSourceFolder = "c:\ConvPDF"
   oStoreFolder = "c:\PDF"
   
   ' This is the actual conversion loop.
   nFileNum = 0
   cFile = Dir$(oSourceFolder + "/*.odt")
   if cFile = "" then
      print "No files were found in that directory"
   end if
   Do While cFile <> ""
      nFileNum = nFileNum + 1

      cSourceName = oSourceFolder + "\" + cFile
   
      If Not FileExists(cSourceName) Then
         Msgbox(cSourceName & " was not found",0,"Error")
         GoTo wasError
      end if

      oDoc=StarDesktop.loadComponentFromURL(cSourceName,"_blank",63,Array(MakePropertyValue("Hidden", True),))
      
      oStoreFile = ConvertToURL(oStoreFolder + Left(cFile, Len(cFile) - 4 ) + ".pdf" )
      
      oDoc.storeToURL(oStoreFile, Array(MakePropertyValue("FilterName", "writer_pdf_Export"),)
      oDoc.dispose()
      cFile = Dir$
   loop
   
   wasError:
End Sub


Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
   Dim oPropertyValue As New com.sun.star.beans.PropertyValue
   If Not IsMissing( cName ) Then
      oPropertyValue.Name = cName
   EndIf
   If Not IsMissing( uValue ) Then
      oPropertyValue.Value = uValue
   EndIf
   MakePropertyValue() = oPropertyValue
End Function 
Mon problème est que, comme je le craignais, cette macro ne fonctionne pas et génère un message d'erreur (et sans doute même plusieurs), le premier bloquant sur la fonction oDoc. Je suppose que ces fonctions ne sont pas compatibles ou pas connues. Le problème c'est que je n'ai pas trouvé par quoi les remplacer sous libreoffice.

Existe-t-il un didacticiel ou une documentation quelconque sur la conversion d'une macro openoffice en libreoffice ? J'ai fait des recherches sur le net mais n'ai rien trouvé.

Merci donc par avance pour le temps que vous pourrez m'accorder.
Dernière modification par micmac le 14 déc. 2012 12:19, modifié 1 fois.
Raison : [Writer] remplace [writer]
OpenOffice 3.0.1 sous Windows XP
Avatar de l’utilisateur
MrPropre
MOOdérateur
MOOdérateur
Messages : 1138
Inscription : 01 oct. 2008 16:54

Re: [writer] récupération de macro Open Office pour Libre Of

Message par MrPropre »

Bonjour,
mdelobel a écrit :Il y a 3 ans maintenant
On vous conseillait ceci :
Cela confirme s'il en était besoin, la nécessité de fournir, en pièce jointe, le code avec le fichier.
mdelobel a écrit :j'ai installé LibreOffice Version 3.6.3.2
Veuillez mettre à jour votre signature avec cette information.

Merci également d'orthographier correctement la balise : [Writer] (première lettre en majuscule).
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] récupération de macro Open Office pour Libre Of

Message par alhazred »

Bonjour,

La macro acConvDoc2Pdf fonctionne impeccablement chez moi.

Dans Main, plein d'erreurs, pourquoi ne pas reprendre celle qui fonctionne en substituant .odt à .doc ainsi que les chemins des dossiers ? ou mieux encore, en faire une macro à trois paramètres (type, URL départ, URL arrivée).
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !