Referencia a una celda dentro de un dibujo

Discute sobre la aplicación de hojas de cálculo
Responder
rodoatto
Mensajes: 3
Registrado: Dom Abr 30, 2023 9:42 pm

Referencia a una celda dentro de un dibujo

Mensaje por rodoatto »

Hola, en Excel puedo poner en un dibujo, por ejemplo, un cuadrado, una referencia a una celda, por ejemplro "=$A$1". Si en esa celda hay un texto, por ejemplo "Iniciar proceso", ese texto pasa a ser el texto del dibujo. De esta manera, de una lista de textos se pueden poner textos en distintos cuadrados. Si cambia el contenido en las celdas, cambia el contenido en los dibujos. ¿se puede hacer en Calc?
LibreOffice 7.5.2.2 en Windows 10
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Referencia a una celda dentro de un dibujo

Mensaje por Neftali R »

Buen día,

La verdad es que no termino de entender tu pregunta, podrías subir un ejemplo o mínimo una captura de lo que quieres?

Te paso un ejemplo de lo que creo que tú quieres que encontré en el foro en inglés.

Al modificar el término en la celda D1, el gráfico cambia para mostrar la representación gráfica de la operación.

Si es esto lo que quieres, es fácil adaptarlo a lo que quieres, si no es esto, sube un ejemplo de lo que quieres.
Adjuntos
trigonometricScenarios.ods
(96.89 KiB) Descargado 67 veces
LibreOffice 7.2.6.2 | Windows 7 Ultimate
rodoatto
Mensajes: 3
Registrado: Dom Abr 30, 2023 9:42 pm

Re: Referencia a una celda dentro de un dibujo

Mensaje por rodoatto »

Hola Neftali R
¡Muchas gracias por tu respuesta!
Utilicé la palabra "dibujo" y he visto que Calc lo llama "Forma", al igual que Excel
Referencia en forma.xlsx
(10.04 KiB) Descargado 62 veces
En esa planilla está el caso
Una forma cualquiera, en este caso un cuadrado, que contiene referencia a la celda A3. Por lo tanto, el texto en el cuadrado se actualiza al cambiar el contenido de la celda A3
Saludos cordiales, muchísimas gracias por tu tiempo
Rodolfo
LibreOffice 7.5.2.2 en Windows 10
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Referencia a una celda dentro de un dibujo

Mensaje por Neftali R »

Hola,

Hasta donde yo sé no es posible cambiar el texto en ese tipo de objetos sin macros, un usuario más experimentado puede indicarte con seguridad si eso está implementado o no.

Pero no creo que sea algo difícil de hacer con macros, el problema sería que para modificarlo, agregar cuadros, celdas con texto, cambiar la ubicación de las celdas con el texto para cada objeto,etc, tendrías que revisar y modificar el código tú mismo y si no tienes experiencia con eso podría ser complicado o confuso.

Voy a hacer un macro que haga eso y ponerlo fácil para que sepas que hay que modificar.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Referencia a una celda dentro de un dibujo

Mensaje por Neftali R »

Buen día,

Aquí está el macro que puede hacer lo que solicitas.

Código: Seleccionar todo

Sub Main
Dim oHoja, oDraw, oTmp As Object
Dim c As Integer, mTextos()
oHoja = ThisComponent.getCurrentController.getActiveSheet
mTexto = oHoja.getCellRangeByName("A1:A5").getDataArray
oDraw = oHoja.getDrawPage
	For c = 0 to oDraw.Count - 1
	oTmp = oDraw.getByIndex(c)
	oTmp.setString(mTexto(c)(0))
	Next
End Sub
Puedes colocar ese macro en el archivo que quieras que esa función esté disponible.

Una pequeña explicación para que puedas implementar el macro sin mayores problemas en tu archivo:

El macro funciona en la hoja que esté activa en el archivo, obtiene los datos de la hoja activa y modifica solo los dibujos de la hoja activa.

El orden en que el contenido de los dibujos será cambiado es el orden en el que los introdujiste al archivo. El dibujo 0 es el primer dibujo que introdujiste al archivo y según el macro, obtendrá el valor de la celda A1, el dibujo 4 es el quinto dibujo que introdujiste al archivo y obtendrá el valor de la celda A5 y así, puedes extender el rango todo lo que quieras, pero si hay más dibujos que celdas en el rango de mTexto, el macro dará error.

mTexto es el rango de celda de los que vendrán las cosas que se introducirán en los dibujos, puedes extenderlo o acortarlo sin problema, también puedes moverlo a otro lugar o usar columnas en lugar de filas(A1:F1 en lugar de A1:A5), sin embargo, esto último requerirá que modifiques también la novena linea del macro a "oTmp.setString(mTexto(0)(c))" en lugar de "oTmp.setString(mTexto(c)(0))".

Para que funcione continuamente el macro de forma automática, deberías ligarlo al suceso de hoja “Contenido cambiado”, eso lo puedes encontrar haciendo clic derecho en el nombre de la hoja en la parte inferior del interfaz, Sucesos de hoja>Contenido cambiado>Asignar Macro y seleccionas el macro que previamente debiste haber puesto en un módulo de macros de Basic.
Captura1.PNG
Captura1.PNG (31.13 KiB) Visto 1022 veces
Captura.PNG
Captura.PNG (33.37 KiB) Visto 1022 veces
Esto sin embargo tiene un inconveniente, si el archivo es usado y modificado constantemente, entonces ese macro hará que el archivo sea más lento, dependiendo de la pc, podría ser una diferencia imperceptible o algo evidente y molesto, si es una archivo que solo se usa para algunas cosas esporádicas, eso no debería ser un problema aunque sea evidentemente más lento.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
rodoatto
Mensajes: 3
Registrado: Dom Abr 30, 2023 9:42 pm

Re: Referencia a una celda dentro de un dibujo

Mensaje por rodoatto »

¡guau!
me parece perfecta la solución y muy didáctica la explicación
voy a implementarlo y te comento los resultados
muchas gracias
saludos cordiales
LibreOffice 7.5.2.2 en Windows 10
Responder