Comunidad Gambas-es
[SOLUCIONADO] BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Linux (https://gambas-es.org/forumdisplay.php?fid=9)
+--- Foro: Programación en otros lenguajes (https://gambas-es.org/forumdisplay.php?fid=12)
+--- Tema: [SOLUCIONADO] BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? (/showthread.php?tid=645)



BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - Grandamakulo - 28-09-2021

Hola a todos:
Creo que esta pregunta debería ir en «Programación en otros lenguajes», pero, como no he encontrado dónde, pues la dejo aquí, a merced de lo que diga el administrador.
La cuestión es que tengo que hacer una macro en LibreOffice BASIC que recorra los párrafos de determinados tipos —«Estilos» mejor que tipos— de todo un documento LO Writer y vea el contenido, el texto, de cada uno. Pero resulta que la cosa ha cambiado mucho desde la última vez que hice cosas de éstas tanto con el LOB como con el VBA y soy incapaz de manejarme en condiciones con el UNO. ¿Alguien podría echarme una mano?
Gracias.
 

Bueno, tras arduas horas persiguiendo StarBASIC y UNO, creo que lo he logrado. Los estilos CC_Página y CC_Viñeta se pueden cambiar, obviamente, por otros:

GAMBAS
  1. Sub DibujaEsquema
  2.  
  3.     Dim Doc As Object
  4.     Dim Enu As Object
  5.     Dim Tex As Object
  6.     Dim Pag as Integer
  7.     Dim Vin as Integer
  8.     
  9.     Dim Paso As String
  10.     
  11.     ' Aquí tamaño y orientación de la página. Dibuja los marcos
  12.     
  13.     Doc=ThisComponent
  14.     Enu=Doc.Text.createEnumeration
  15.     
  16.     While Enu.hasMoreElements
  17.         Tex=Enu.nextElement
  18.         If Tex.supportsService("com.sun.star.text.Paragraph") Then
  19.             
  20.             If Tex.ParaStyleName=("CC_Página") Then
  21.                 Pag=Pag+1
  22.                 Vin=0
  23.                 'Dibuja la página: Aquí hará «cosas» con la página
  24.                 Paso=Paso & "Página: " & Pag & CHr(13)
  25.             End If
  26.             If Tex.ParaStyleName=("CC_Viñeta") Then
  27.                 Vin=Vin+1
  28.                 'Dibuja la viñeta: Aquí hará «cosas» con la viñeta
  29.                 Paso=Paso & "   Viñeta: " & Pag & "." & Vin & " " & Tex.String & Chr(13)
  30.             End If
  31.                     
  32.         End If
  33.     Wend
  34.  
  35.     MSGBOX (Paso)
  36.  





RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - tincho - 28-09-2021

En el menú herramientas / herramientas de desarrollo de Writer hay algo que por ahí te sirve para darte una idea, pero no hice nunca un macro con libreoffice.
Saludos.


RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - Grandamakulo - 28-09-2021

Gracias, Tincho:
La verdad es que yo sí que he hecho muchas, pero casi todas, o todas, para Calc o Excel. Las pocas que he hecho para Writer o Word fueron hace veinte años y no me acuerdo, releñes. Y el problema viene, para mí, desde la «búsqueda» de un elemento determinado. Por más vueltas que he dado por la red, no encuentro cómo instanciar un tipo de párrafo.



RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - tincho - 29-09-2021

ok, vamos a hacer algo, envíame una macro que haga algo sencillo con un documento writer. así veo como trabaja y tal vez te pueda ayudar, pero primero me tiene que ayudar tu.
Saludos.


RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - Grandamakulo - 29-09-2021

¡Ahí va! =D


RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - Grandamakulo - 06-10-2021

Bueno, parece que solucionado. He puesto el código en el primer mensaje para que sea más fácil de ver.


RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - tincho - 07-10-2021

(06-10-2021, 08:15)Grandamakulo escribió:  Bueno, parece que solucionado. He puesto el código en el primer mensaje para que sea más fácil de ver.

Uhh, me perdí en el limbo y al final no hice nada, pero bueno veo que lo solucionaste.
Saludos.


RE: BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo? - Grandamakulo - 08-10-2021

(07-10-2021, 23:25)tincho escribió:  
(06-10-2021, 08:15)Grandamakulo escribió:  Bueno, parece que solucionado. He puesto el código en el primer mensaje para que sea más fácil de ver.

Uhh, me perdí en el limbo y al final no hice nada, pero bueno veo que lo solucionaste.
Saludos.

Si es que andamos todos como locos con el final del verano  Smile . En cualquier caso, gracias por el interés.