Macro para recorrer y editar entradas de la tabla de contenidos en Writer

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.

Selection_468

Selection_469

 

 

 

 

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

Un comentario en «Macro para recorrer y editar entradas de la tabla de contenidos en Writer»

  1. soy colombiano estoy en trabajo de grado y mi tesis quiero que se trate sobre el tema de macros en oobasic pero no se programar en obasic por esto quiero pedirles que por favor me ayuden a pasar este archivo que fue hecho en excel alibre office y que las macros funcionen.

    de esto depende mi grado.

    espero me ayuden soy estudiante y no cuento con recursos economicos para estos gastos pero se que usteds me ayudarn

    Gracias

    si me ayudan a que correo puedo enviar el archivo ya que es urgente mi grado.

    Nelson Barrera

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.