Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  BASIC Libre Office: ¿Cómo recorrer los párrafos por tipo?
#1
Question 

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.  



En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
[-] Los siguientes 1 usuarios dice gracias a Grandamakulo por este post:
  • tincho
    ¡Gracias!
#2

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.
    ¡Gracias!
#3

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.

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!
#4

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.
    ¡Gracias!
#5

¡Ahí va! =D


Archivos adjuntos
.zip Pruebas macros.odt.zip Tamaño: 12.69 KB  Descargas: 1

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!
#6

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

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!
#7

(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.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • Grandamakulo
    ¡Gracias!
#8

(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.

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)