Aller au contenu

LibreOffice et Apache OpenOffice/Writer/Macros

Un livre de Wikilivres.
Icône de LO Writer Texte
Icône de LO Calc Classeur
Icône de LO Impress Présentation
Icône de LO Draw Dessin
Icône de LO Base Base de données
Icône de LO Math Formule
LibreOffice et Apache OpenOffice
Icône de LO

Consultez également ces pages dans d’autres projets Wikimedia :

Article encyclopédique sur Wikipédia.
Ressources éducatives sur Wikiversité.


Sécurité des macros

L'exécution des macros est bloquée par défaut, pour éviter la propagation de virus ou programmes indésirables.

Pour les activer, il faut aller dans le menu Outils\Options\Sécurité\Sécurité des macros, et définir le niveau le plus faible.

Afin de pouvoir les exécuter plus rapidement qu'en passant par le menu Outils\Macros\Exécuter la macro (ou ALT + O, + M, + M, + U), il est possible d'assigner un raccourci clavier à certaines d'entre elles. Pour ce faire, se rendre dans Outils\Personnaliser. Les modules sont ensuite sélectionnables en bas à gauche : pour les raccourcis clavier dans l'onglet Clavier, et pour les boutons dans l'onglet Barre d'outils\Ajouter....

Il peut y avoir plusieurs macros par module.

Ouvrir un document

[modifier | modifier le wikicode]
 
Sub ouverture
  dim Chemin as String, URL as String
  Chemin = "C:\Users\Login\Desktop\DocumentTest.odt"
  URL = ConvertToUrl(Chemin)
  Document1 = StarDesktop.LoadComponentFromURL(URL,"_blank",0, array())
End sub

Cette fonction renvoie une erreur si le fichier n'existe pas. Il faut donc modifier son chemin pour qu'il soit créé dans ce cas :

 
Sub creation
  ' Crée et ouvre un fichier .odt
  URL2 = "private:factory/swriter"
  Document2 = starDeskTop.loadComponentFromUrl (URL2, "_blank", 0, Array())
  Document2.storeToURL( ConvertToUrl("C:\Users\Login\Desktop\DocumentTest2.odt"), Array() )
End sub

On peut créer d'autres types de fichiers de la même façon, en remplaçant swriter par scalc, sdraw, ou simpress.

Si on a pas besoin de manipuler le nouveau document en lui donnant un nom, voici la méthode générale :

 
Sub OuvrirAutreApplication
  RetVal = Shell("C:\Program Files (x86)\Notepad++\notepad++.exe", 1)
End Sub

Les paramètres d'impression sont stockés dans un tableau de taille 3, nommé Parametre1 dans l'exemple, appliqué au Document1 déjà ouvert ci-dessus :

 
  dim Parametre1(2) as new com.sun.star.beans.PropertyValue
  Parametre1(0).Name = "Copies"
  Parametre1(0).Value = 1
  Parametre1(1).Name = "RangeText"
  Parametre1(1).Value = "1"
  Parametre1(2).Name = "Collate"
  Parametre1(2).Value = true
  Document1.print(Parametres1())

Lire un document

[modifier | modifier le wikicode]

Lire un document Writer

[modifier | modifier le wikicode]

Tout le document courant[1] :

Sub lectureODT
  oDoc1 = ThisComponent
  oContr1 = oDoc1.CurrentController
  oVC1 = oContr1.ViewCursor
  oVC1.gotoStart(false)
  oVC1.gotoEnd(true) 
  msgbox oVC1.string
End Sub

Affichage de la ligne courante :

Sub lectureLigne ()
  oVC = thisComponent.getCurrentController.getViewCursor
  oCursor = oVC.getText.createTextCursorByRange(oVC)
  oCursor.gotoStartOfSentence(false)
  oCursor.gotoEndOfSentence(true)
  msgbox oCursor.getString
End sub

Recherche de la première phrase avec regex :

Sub RecherchePremier
  Dim Plage As Object
  Dim Phrase As String
  Dim oCSD As Object  
  oCSD = ThisComponent.createSearchDescriptor
  Phrase = "." & ".*" & "."
  oCSD.SearchString = Phrase
  oCSD.SearchRegularExpression = True
  Plage = ThisComponent.FindFirst(oCSD)
  If IsNull(Plage) Then
    Msgbox "Aucune phrase trouvée."
  Else
    Msgbox Plage.String
  End If
End sub

Affichage de toutes les phrases d'un document :

Sub RechercheTout
  Dim Plage As Object
  Dim Phrase As String
  Dim oCSD As Object  
  oCSD = ThisComponent.createSearchDescriptor
  Phrase = "." & ".*" & "."   
  oCSD.SearchString = Phrase
  oCSD.SearchRegularExpression = True 
  Phrases =  ThisComponent.FindAll(oCSD)
  For i = 0 To Phrases.Count - 1
	  If IsNull(Phrases(i)) Then
	    Msgbox "Aucune phrase trouvée"
	  Else
	    msgbox Phrases(i).String
	  End If
  Next
End Sub

Les deux fonctions ci-dessous permettent de compter les nombres de consonnes et voyelles du texte sélectionné dans le document courant :

Sub CompteurConsonneVoyelle
  oDoc = ThisComponent
  oText = oDoc.getText()
  oSelection = oDoc.getCurrentSelection()
  If oSelection.Count = 1 Then
    oRange = oSelection.getByIndex(0)
    msgbox ConsonneVoyelle(oRange.getString())
  End If
End Sub


Public Function ConsonneVoyelle(champ As String) As string
  For p = 1 To Len(champ) + 1
    l = Mid(champ, p, 1)
    If Mid(champ, p, 1) = "(" Then
     Do Until (Mid(champ, p, 1) = ")")
    	p = p + 1
     Loop
    End If     
    If l = "a" Or l = "A" Or l = "á" Or l = "à" Or l = "ä" Or l = "ã" Or l = "å" Or l = "æ" Or l = "e" Or l = "E" Or l = "é" Or l = "è" _
    Or l = "ë" Or l = "ê" Or l = "i" Or l = "I" Or l = "í" Or l = "o" Or l = "O" Or l = "ò" Or l = "ó" Or l = "õ" Or l = "ô" Or l = "ö" _
    Or l = "œ" Or l = "u" Or l = "U" Or l = "ü" Or l = "û" Or l = "ú" Or l = "ù" Or l = "y" Or l = "Y" Then voyelle = voyelle + 1
    if l = "b" Or l = "B" Or l = "c" Or l = "C" Or l = "ç" Or l = "d" Or l = "D" Or l = "f" Or l = "F" Or l = "g" Or l = "G" Or l = "h" _
    Or l = "H" Or l = "k" Or l = "K" Or l = "l" Or l = "L" Or l = "m" Or l = "M" Or l = "n" Or l = "N" Or l = "p" Or l = "P" Or l = "q" _
    Or l = "Q" Or l = "r" Or l = "R" Or l = "s" Or l = "S" Or l = "t" Or l = "T" Or l = "v" Or l = "V" Or l = "w" Or l = "W" Or l = "x" _
    Or l = "X" Or l = "z" Or l = "Z" Then consonne = consonne + 1
  Next p
  ConsonneVoyelle = ("Voyelles : " & voyelle & ". Consonnes : " & consonne)
End Function

Lire un document texte

[modifier | modifier le wikicode]
Sub lectureTXT()
  ThisDoc=ThisComponent
  ThisText=ThisDoc.Text
  TheCursor=ThisText.createTextCursor
  FichierTxt="C:\Users\Login\Desktop\FichierALire.txt"
  f1 = FreeFile()
  Open FichierTxt for Input as #f1
  Do while NOT EOF(f1)
    Line Input #f1, s
    msgbox (s)
  Loop
  Close #f1
End Sub

Lire un classeur Calc

[modifier | modifier le wikicode]
Pour plus de détails voir : LibreOffice et Apache OpenOffice/Calc/Macros.

Modifier un document

[modifier | modifier le wikicode]

On démarre à l'endroit du curseur :

 
Sub insertion
  oVC = thisComponent.getCurrentController.getViewCursor
  oText = oVC.text
  oText.insertString(oVC, "Texte inséré :", False)
  oText.insertControlCharacter(oVC, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
  oText.insertString(oVC, "Nouveau paragraphe avec ", False)
  oVC.setPropertyValue("CharWeight", com.sun.star.awt.FontWeight.BOLD)
  oText.insertString(oVC, "gras", false)
  oVC.setPropertyValue("CharWeight", com.sun.star.awt.FontWeight.NORMAL)
  oText.insertString(oVC, " dedans.", false)
End sub

Pour commencer à l'emplacement d'une chaine connue :

Sub RechercheEtRemplace ()
  Document1 = ThisComponent
  FandR = Document1.createReplaceDescriptor
  FandR.SearchString = "gras"
  FandR.ReplaceString = "bold"
  Found = Document1.findFirst(FandR)
  Found.setString(FandR.ReplaceString)
End sub

Supprimer un fichier

[modifier | modifier le wikicode]
 
Sub suppression
  kill("C:\Users\Login\Desktop\DocumentTest.odt")
End sub
  1. http://www.oooforum.org/forum/viewtopic.phtml?t=44717