Outils pour utilisateurs

Outils du site


start:serveur:macro_eleve

Description

Je vais un petit peu expliquer la macro permettant de générer les cours élève, elle est écrite en Basic attention ce n'est pas du VBA et cela fait appel à lAPI de libreOffice qui lui est spécifique.

Macro pour générer les cours élèves

    REM  *****  BASIC  *****
    Sub Main

       repBase="/home/cemoi/ownCloud/SFTP/Travail_en_service/" 'chemin à adapter
       
       ' boucle sur les repertoires et sous repertoires et traitement des fichiers
       call boucleRepertoire(convertToUrl(repBase))

        msgBox "Fin du traitement"

    End Sub

        sub boucleRepertoire(sUrl)
    Dim oSFA As Object, oDateFile As Object
    Dim Mois As Long, DateJours As Long, Heure As Long
    Dim sNom As String
    Dim ListeFichiers As Variant
    oSFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
    ListeFichiers = oSFA.getFolderContents(sUrl, True)
    Mois = Month(Now)'on recupére la date du jour (mois jour heure)
    DateJours = Day(Now)
    Heure = Hour(Now)
       for each sNom in ListeFichiers
          if oSFA.IsFolder(sNom) then
             call boucleRepertoire(sNom) ' appel recursif
          else
             if endWith(sNom,".odt") and (not endWith(sNom,"_eleve.odt")) and instr(sNom,"cours") > 0 then
                 oDateFile = oSFA.getDateTimeModified(convertToURL(sUrl))
                         'if oDateFile.day = DateJours And oDateFile.Month = Mois and oDateFile.hours < 1 Then 'on definit ds quelle condition de temps les fichiers doivent etre traité
                            call traiteFichier(sNom) ' on traite ce fichier
                     End if
                End if
             'End if
       next sNom
    end sub

    function endWith(chaine, cherche)

       endWith = ( right(chaine, len(cherche)) = cherche)

    end function

    sub traiteFichier(urlFichier)
       
       ' ouverture
       doc = starDesktop.loadComponentFromUrl(urlFichier,"_blank",0, array())

       ' traitement des styles
       call RemplacerStylePartout2(doc)
       
       ' nom de fichier de sortie
       spliter = split(doc.url, ".") ' decoupe la chaine avec les points
       nb = ubound(spliter)
       spliter(nb-1) = spliter(nb-1)+"_eleve"
       
       spliter(nb)="pdf"
       newUrlPdf = join(spliter,".")
       
       'spliter(nb)="odt"
       'newUrlOdt = join(spliter,".")   
       
       'enregistrement nouveau odt
       'doc.storeAsUrl(newUrlOdt, array()) ' aucune option, array vide
       
       ' options de l'export pdf
       dim propsFiltre(0 to 0) as new com.sun.star.beans.PropertyValue
       propsFiltre(0).name = "IsSkipEmptyPages"
       propsFiltre(0).value = False   

       dim prop(0 to 1) as new com.sun.star.beans.PropertyValue
       prop(0).name="FilterName"
       prop(0).value = "writer_pdf_Export"
       prop(1).name="FilterData"
       prop(1).value = propsFiltre()
       
       ' export pdf
       doc.storeToUrl(newUrlPdf, prop() )
       
       ' on ferme le fichier initial sans modification
       doc.close(false)

    end sub

    Sub RemplacerStylePartout2(MonDocument)

       Dim JeCherche As Object

       JeCherche = MonDocument.createReplaceDescriptor
       
       with JeCherche
         .SearchString  = "Texte eleve visible"
         .ReplaceString = "Texte eleve invisible"
         .SearchStyles = true
       end with
       
       MonDocument.replaceAll(JeCherche)
       
    End Sub
start/serveur/macro_eleve.txt · Dernière modification: 2018/01/01 18:09 par cemoi