Macros

From The Document Foundation Wiki
< Macros‎ | Writer
Jump to: navigation, search

Comment rechercher du texte figurant entre des balises ?

On souhaite retrouver par programme le texte figurant entre une balise de début et une balise de fin. Par exemple retrouver ce qui figure dans un document entre début d'explication et fin d'explication.

Le principe est de rechercher la "balise" de début, ce qui donne une position de départ pour rechercher la "balise" de fin.

Ces deux positions obtenues on sélectionne via le curseur visible depuis la fin de la balise début jusqu'au début de la balise de fin...

La recherche se fait via la méthode createSearchDescriptor qui utilise un SearchDescriptor par lequel on définit les propriétés de la recherche : texte recherché, respect de la casse, utilisation d'expressions régulières, etc[1].

sub PysChercheTexte

dim oDoc as object
dim oSearchZone as object
dim oTrouveZone as object
dim oTrouveApresZone as object
dim oCurseurVisible as object

oDoc = thiscomponent

oSearchZone = oDoc.createSearchDescriptor()

with oSearchZone
        .SearchString = "début d'explication"
end with

oTrouveZone = oDoc.findFirst(oSearchZone)

if not(isnull(oTrouveZone)) then
        with oSearchZone
                .SearchString = "fin d'explication"
        end with
        oTrouveApresZone = oDoc.findNext(oTrouveZone.End, oSearchZone)
        if not(isnull(oTrouveApresZone)) then
                oCurseurVisible = oDoc.currentcontroller.viewCursor
                oCurseurVisible.gotoRange(oTrouveZone.End, false)
                oCurseurVisible.gotoRange(oTrouveApresZone.Start, True)
                msgbox oCurseurVisible.string, 64, "Texte trouvé"
        else
                msgbox "balise de fin non trouvée", 64, "Recherche"
        end if
else
        msgbox "balise de début non trouvée", 64, "Recherche"
end if


end sub

Notes :