[RESUELTO] Pasar selccion de listbox a hoja writer

Discute sobre el procesador de textos
Responder
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

[RESUELTO] Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Hola, buenos dias
Soy nuevo en esto de los macros y llevo dias intentado hacer el texto que seleccione en un cuadro de dialogo pase a la hoja writer desde donde se abre el cuadro de dialgo, adjunto archivo.
La idea es selccionar diferentes opciones de diferentes listbox y al darle al boton, esas opciones se escriban una detras de la otra en el documento odt justo debajo del boton para abrir dicho cuadro de dialogo.

Gracias por vuestra ayuda, un saludo
Adjuntos
Ejemplo.odt
(12.62 KiB) Descargado 165 veces
Última edición por stinorte el Vie Dic 24, 2021 12:11 pm, editado 1 vez en total.
OpenOffice 4.1.7 Windows 7
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Pasar selccion de listbox a hoja writer

Mensaje por Neftali R »

Hola, bienvenido al foro.

Esta función hace lo que estás pidiendo.

Código: Seleccionar todo

Sub PasarSeleccionALaHoja
Dim oCursor As Object, c As Integer, sTmp As String, mControls()
	
	mControls = oDialogo.getControls()
	oCursor = ThisComponent.getCurrentController().getViewCursor()
	oCursor.jumpToEndOfPage()
	sTmp = Chr(13)
		For c = 0 To Ubound(mControls)
			If mControls(c).supportsService("com.sun.star.awt.UnoControlListBox") Then 
				sTmp = sTmp & mControls(c).SelectedItem & Chr(13)
			End If
		Next
	oCursor.setString(sTmp)
End Sub
Importante, para que funcione tienes que declarar oDialogo

Código: Seleccionar todo

Dim oDialogo As Object

Fuera del primer SUB, preferiblemente al inicio del módulo.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

Re: Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Hola, ante todo gracias por responder Neftali
Al poner el codigo de me has puesto me da este error
oDialogo esta fuera del primer sub

Gracias por vuestra ayuda.
Adjuntos
Ejemplo.png
Ejemplo.png (31.02 KiB) Visto 3302 veces
OpenOffice 4.1.7 Windows 7
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Pasar selccion de listbox a hoja writer

Mensaje por Neftali R »

Ese Sub tiene que ejecutarse desde el botón del formulario, solo se puede ejecutar mientras el dialogo esté abierto.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

Re: Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Hola

Si, asi he lo he puesto, al selecionar las listbox y darle al boton para que se pase a la hoja sale ese error
OpenOffice 4.1.7 Windows 7
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Pasar selccion de listbox a hoja writer

Mensaje por Neftali R »

Bueno, ejecutalo paso a paso con F8, me parece que cómo lo tienes en módulos diferentes, oDialogo queda como "Null" en el módulo donde está PasarSeleccionALaHoja, si quieres tener ambos sub en módulos diferentes, tendrías que declarar oDialogo con algo diferente a Dim, Global podría funcionar.

Código: Seleccionar todo

Global oDialogo As Object
Ojo importante, si en el sub donde se invoca el dialogo hay declarada una variable oDialogo, entonces cuando se abra el dialogo va a estar asignado a la variable local del SUB y no va a afectar la variable Privada o Global que está fuera del SUB.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

Re: Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Efectivamente Neftali R ahora si lo hace, pasa la seleccion de las listbox a la hoja
Lo unico que lo pasa en lineas diferentes, se podria poner que al pasar la seleccion de las listbox las pusiera en la misma linea una de tras de la otra? ( selccion de listbox 1 listbox 2 listbox 3 listbox 4.....) todo en la misma linea?

Gracias por vuestra ayuda
OpenOffice 4.1.7 Windows 7
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Pasar selccion de listbox a hoja writer

Mensaje por Neftali R »

Si lees el código, te darás cuenta de que la cadena de texto que se pega en la hoja es sTmp, y está construida de la siguiente manera:

Código: Seleccionar todo

sTmp = Chr(13)
sTmp = sTmp & mControls(c).SelectedItem & Chr(13)
Chr(13) es un salto de linea (Y Chr(10) también), está el salto de línea inicial y después es que construye la cadena, en la segunda linea donde se modifica sTmp puedes poner lo que quieras y eso será lo que se escriba en el archivo.

Código: Seleccionar todo

sTmp = sTmp & mControls(c).SelectedItem & Chr(9) 
Chr(9) es un TAB, pero no estás limitado a usar Chr() para concatenar strings, puedes introducir cualquier cadena que quieras.

Código: Seleccionar todo

sTmp = sTmp & mControls(c).SelectedItem & "  " 
sTmp = sTmp & mControls(c).SelectedItem & " No sé, tú dime " 
sTmp = sTmp & mControls(c).SelectedItem & " Vivan los elefantes! " 
Incluso puedes hacer cosas más "complicadas" cómo:

Código: Seleccionar todo

 sTmp = Chr(13)
      For c = 0 To Ubound(mControls)
         If mControls(c).supportsService("com.sun.star.awt.UnoControlListBox") Then 
            sTmp = sTmp & " Cuadro " & c & ": " & mControls(c).SelectedItem 
         End If
      Next 
Todos son válidos, depende de ti colocar exactamente lo que quieres.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

Re: Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Muchas gracias Neftali R !!!!!, lo hace todo a al perfeccion

Podria ponerse que lo que se pase de los listbox quedaria dentro de una celda de una tabla en la hoja?, con eso ya solucionaria el problema que tengo con este documento

Muchas gracias,
OpenOffice 4.1.7 Windows 7
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Pasar selccion de listbox a hoja writer

Mensaje por Neftali R »

Señor Stinorte,

Eso último que también necesita tendría que haberlo dicho desde el principio, la próxima intenta hacer las peticiones lo más específicas posibles.

La verdad eso último no lo sé hacer, es más, no tengo idea de cómo hacerlo, soy usuario de Calc y conozco y domino muchas funciones del API de LibreOffice para Calc, pero de Writer no conozco APIs más allá de las básicas, cómo hacer una tabla desde el código y cómo moverme entre las distintas celdas en una tabla de Writer es algo que me va a tomar un tiempo averiguar...
LibreOffice 7.2.6.2 | Windows 7 Ultimate
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

Re: Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Muchas gracias Neftali R por tu ayuda, me has ayudado mucho

Lo de ponerlo en una celda de una tabla ha surgido segun avanzaba el documento, no era el principo de la idea

Pero muchisimas gracias, un saludo
OpenOffice 4.1.7 Windows 7
stinorte
Mensajes: 14
Registrado: Vie Dic 17, 2021 1:47 pm

Re: Pasar selccion de listbox a hoja writer

Mensaje por stinorte »

Hola de nuevo

Gracias a la ayuda de Neftali R y algunos hilos mas de este foro, he conseguido hacer el proposito de este hilo

Os dejo aqui el archivo por si le hace falta a aguien algo similar

Muchas gracias a todos y en especial a Neftali R.
Adjuntos
Ejemplo.odt
(13.21 KiB) Descargado 160 veces
OpenOffice 4.1.7 Windows 7
Responder