LibreOffice et Apache OpenOffice/Writer/Macros
Installation
modifierL'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
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
Imprimer
modifierLes 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
modifierLire un document Writer
modifierTout 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
modifierSub 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- Pour plus de détails voir : LibreOffice et Apache OpenOffice/Calc/Macros.
Modifier un document
modifierOn 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
Sub suppression
kill("C:\Users\Login\Desktop\DocumentTest.odt")
End sub
Références
modifier- http://wiki.services.openoffice.org/wiki/The_OpenOffice.org_recorder_and_UNO_dispatch_calls
- http://christianwtd.free.fr/index.php?rubrique=MenuFonctionsBasic
- http://ooo.developpez.com/faq/?page=Writer
- http://ooo.developpez.com/faq/?page=Interaction
- http://www.docstoc.com/docs/67353509/2006---Eyrolles---Programmation-OpenOffice