Supongamos que quieres recorrer la tabla de contenidos de un documento Writer para modificar automáticamente algunas de las entradas. Por ejemplo, supongamos que quieres cambiar las entradas que empiezan por » PARTE» (como » PARTE 1″, » PARTE 2″…) por el mismo contenido pero en negrita, y añadirle un salto de línea a continuación. Es decir, quieres modificar el índice de contenido de la imagen de la izquierda para que quede como el de la derecha.
Puedes usar la siguiente macro StarBasic en LibreOffice Writer (Herramientas / Macros / Organizar macros / LibreOffice Basic …) :
' Dentro del Módulo1 de "Mis macros", en concreto en el método Main Dim SearchDesc, oVC, Found, Cursor Dim Fuera as Boolean oDoc = ThisComponent ' oDoc es el documento actual SearchDesc = oDoc.createSearchDescriptor ' vamos a realizar una búsqueda With SearchDesc .SearchString = "^ PARTE.*$" ' con esta expresión regular .SearchRegularExpression = True end With oVC = oDoc.getCurrentController.getViewCursor ' crear cursor para recorrer matches Fuera = false Found = oDoc.findFirst(SearchDesc) ' situarse en el primer match Do Until Fuera Found.gotoStartOfSentence(false) ' ir al comienzo de la línea (sin select) Found.gotoEndOfSentence(true) ' seleccionar hasta final de línea Cursor = oVC.getText.createTextCursorByRange(Found) ' vamos a modificar la selec. if NOT IsNull(Cursor.DocumentIndex) Then if NOT IsEmpty(Cursor.DocumentIndex) Then Found.CharWeight = com.sun.star.awt.FontWeight.BOLD ' por negrita Cursor.setString(CHR$(13) + Found.getString() + CHR$(13)) ' y salto de línea Found = oDoc.findNext(Found.End, SearchDesc) ' vamos a por siguiente match else Fuera = True end if end if Loop |