OpenOffice III – Reseteo del contador de páginas

En un post anterior se explicaba como acceder a una base de datos desde OpenOffice, generar documentos con los datos obtenidos de la base de datos y cómo un documento obtenido así presentaba una numeración de página con saltos. Los saltos se deben a que el documento se entiende como un conjunto de documentos independientes puestos juntos, sin embargo, a veces esto no nos interesa y necesitamos resetear el contador de páginas para obtener una paginación normal. Para eso usaremos una macro en Basic.

Reseteo del número de página

Para restear ese cambio de numeración de página habría que ponerse en el principio del primer párrafo tras el salto de página que queremos cambiar. Nos metemos en “Formato”->”Párrafo…” y, en la pestaña “Flujo de texto” vemos que en el apartado salto hay marcado un salto de página y el recuadro de “Con estilo de página”, un estilo de página (normalmente “Predeterminado”) y “número de página” con un valor de 1. Si ponemos 0 en este valor ya no se produce el salto en la numeración de página.

Pero claro, esto esta muy bien si son pocos los documentos combinados. ¿Qué hacer si son muchos?

Macro para resetear el número de página

Tras mucho buscar encontré un macro para hacer esto en este hilo del foro de usuarios de OpenOffice. El macro ya adaptado para que funcione directamente es el siguiente:

Sub Main
Dim document As Object
document = ThisComponent
Dim oTextEnum As Object
Dim oTextElement As Object
Dim oTextPortionEnum As Object
Dim oTextPortion As Object
 
oTextEnum = document.Text.createEnumeration
 
While oTextEnum.hasMoreElements() REM iterate through paragraphs and tables
     oTextElement = oTextEnum.nextElement()
   If oTextElement.supportsService("com.sun.star.text.Paragraph") Then
      oTextPortionEnum = oTextElement.createEnumeration()
      While oTextPortionEnum.hasMoreElements()
         oTextPortion = oTextPortionEnum.nextElement()
         If oTextPortion.PageNumberOffset = 1 Then
            oTextPortion.PageNumberOffset = 0
         End If
      Wend
 
   End If
Wend
 
End Sub

Espero que a alguien le pueda servir y que no tenga que buscar tanto como yo una solución para algo que debería ser sencillo.

Tags: , , ,

Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *