Clic en un botón y saltar a una posición de un mapa en Calc

Pulsar un botón y saltar al mapa en OpenOffice LibreOffice Calc

Estaba casi convencido que es imposible que al hacer clic sobre un botón insertado en una hoja de cálculo podamos hacer que el foco de la aplicación salte a una posición en un mapa, que es una imagen situada en otra hoja de un libro de OpenOffice / LibreOffice Calc. Esto más o menos es lo que ha solicitado un usuario del foro oficial, y la verdad, lo encontramos tan interesante que nos hemos puesto manos a la obra.

¿Quieres saber cómo lo hemos logrado?

Hemos aprovechado la posibilidad de Calc de bautizar celdas o rangos de celdas con un nombre. Sabemos que una vez bautizada la celda o el rango, desde el cuadro de nombres podemos saltar a la celda o rango del nombre seleccionado, independientemente de la hoja en la que se encuentre.

Si podemos saltar, es posible que podamos grabar una macro que posteriormente reproduzca una y otra vez tal hecho, y si tenemos una macro, podemos asignarla al evento correspondiente de un botón, así que éste es nuestro planteamiento.

Las macros

En un libro nuevo, agregamos un módulo de macros (ver el Paso 1 de este tutorial) y pegamos los siguientes procedimientos (Selecciona todo el código, copia, pasa al módulo creado en el editor IDE Basic y pega):

REM  *****  BASIC  *****

Option Explicit

Sub BtPais_Clic( oEv )
'--------------------------------------------------------------------------------------------
Dim oBoton As Object, cPais As String
oBoton = oEv.Source ' botón pulsado
cPais = oBoton.Model.Tag ' la propiedad tag del botón guarda el nombre del pais
Ir_A( cPais )
End Sub

Sub Ir_A( cPais As String ) ' creada con la grabadora y adaptada
'--------------------------------------------------------------------------------------------
Dim Dispatcher As Object
Dim Args(0) As New com.sun.star.beans.PropertyValue
Dispatcher = CreateUNOService("com.sun.star.frame.DispatchHelper")
Args(0).Name = "ToPoint"
Args(0).Value = cPais
Dispatcher.ExecuteDispatch(ThisComponent.CurrentController.Frame, ".uno:GoToCell", "", 0, Args())
End Sub

Cerramos el editor IDE Basic. Guardamos el libro con el nombre que consideremos oportuno, en nuestro caso, Ir a Mapa.

Los botones

En la hoja 1, insertamos en las celdas correspondientes los nombres de los paises. Seleccionamos las filas en las que hemos introducido los nombres de los países y las hacemos un poco más altas, para poder insertar fácilmente un botón al lado de cada nombre.

Insertamos un primer botón como se ve en la imagen.

 

Insertamos un botón en la hoja de cálculo

 

Con el botón seleccionado mostramos sus propiedades (desde su menú contextual selecciona Campo de control...).

En el diálogo mostrado cambiamos su propiedad Título a Ir:

 

Cambiamos la propiedad Título del botón

Cambiamos la propiedad Información adicional por el nombre del país asociado al botón; en el ejemplo, España:

Cambiamos la propiedad Información adicional del botón

Esta propiedad podremos utilizarla después en la macro que controla el evento del botón pues el objeto Model del control nos permite conocerla a través de la propiedad llamada Tag.

Cambiamos a la ficha Acontecimientos. Al evento Botón del ratón soltado le asignamos la macro BtPais_Clic.

Asignar una macro a un evento de un botón en Calc

 

Ya hemos terminado con este botón. Los demás son todos idénticos, a excepción de la propiedad Información adicional que cambiaremos en cada uno de ellos.

Sin cerrar el diálogo propiedades, copia y pega el botón de nuevo, tantas veces como países hemos introducido. Procura que todos los botones queden bien alineados, para ofrecer un buen acabado. A continuación te explicamos un truquito para hacerlo más sencillo:

 

Duplicar botones símplemente arrastrando con el ratón

 

Para duplicar fácilmente los botones sigue estos pasos:

  • Haz un clic sobre el botón; se mostrará seleccionado con sus manejadores verdes
  • De nuevo, haz un clic y arrastra inmediatamente, sin esperar, hacia abajo, y sin soltar el botón del ratón; verás como un espectro del botón y el cursor del ratón se ha convertido en una cruz de cuatro flechas.
  • Seguimos sin soltar el botón del ratón; situamos el espectro del botón en el lugar adecuado, y manteniendo pulsada la tecla Ctrl, soltamos el botón del ratón. Un segundo después, puedes soltar la tecla Ctrl.

Como ves, duplicar un control es muy sencillo, si se siguen los pasos en el orden y modo adecuado; también puedes utilizar copiar y pegar, si te parece más sencillo.

Recuerda: En cada nuevo botón deberemos cambiar la propiedad Información adicional al país asociado correspondiente. El resultado se verá como la imagen:

 

Todos los botones insertados en la hoja de cálculo

 

Nota: Los nombres utilizados en la propiedad Información adicional deben de tener más de 3 letras, deben empezar por una letra, y no contener espacios (utiliza por ejemplo el guión bajo, como hemos hecho para la celda Reino Unido, que lo hemos escrito en la propiedad como Reino_Unido, o puedes tambien escribirlo como ReinoUnido, todo junto).

El mapa

Pasamos a la hoja 2; pensamos utilizar las celdas como una cuadrícula que nos permitirá situarnos en cualquier zona del mapa. Por ello, seleccionando toda la hoja, hacemos las columnas más estrechas, y si lo consideras necesario, las filas mas bajitas, de forma que las celdas sean más o menos cuadradas. En nuestro caso nos hemos limitado a hacer las columnas más estrechas (0,66cm), manteniendo la altura de las filas (0,45cm), pero si quieres más precisión, reduce ambas (ancho de columnas y alto de fila), por ejemplo, a 0,30cm.

 

 

 

Una vez ajustadas las dimensiones de filas y columnas, insertamos la imagen del mapa (si elijes pegar una imagen, quizás tengas que utilizar Pegado especial > Bitmap ).

Una vez situado el mapa en su lugar, lo enviamos al fondo de la hoja, para de esta forma poder hacer clic sobre las celdas sin que la imagen nos lo impida. Desde el menú contextual de la imagen, seleccionamos Posición > En el fondo.

 

Enviar la imagen al fondo de la hoja en Calc

 

Si necesitas volver a seleccionar la imagen situada en el fondo de la hoja, puedes hacerlo desde el Navegador de Calc.

Bautizar celdas con nombre

Como dijimos, para poder saltar a una celda determinada mediante una macro asignada a un botón, vamos a utilizar la propiedad de Calc que nos permite bautizar celdas o rangos de celdas con un nombre.

En la Hoja2, hacemos clic sobre la celda situada justo sobre Madrid (en nuestro caso, F28). Pulsamos la combinación de teclas Ctrl+F3 o bien activamos la opción desde el menú Insertar > Nombres > Definir...

Escribimos España en el cuadro Nombre; comprobamos que Asignado a muestra la referencia a la celda situada en Madrid (en nuestro caso, SHoja2.$F$28, o sea, la referencia absoluta de la celda F28 de la Hoja2).

Si no es así, hacemos clic en Asignado a, y luego, clic sobre la celda, para que actualice la referencia.

Hacemos clic en el botón Añadir.

 

Asignando nombre a las celdas

 

Repetimos el proceso para cada país que relacionamos en la Hoja1.

Nota: Los nombres deben coincidir con los utilizados en la propiedad Información adicional y por lo tanto deben de tener más de 3 letras, deben empezar por una letra, y no contener espacios (utiliza por ejemplo el guión bajo, como hemos hecho para la celda Reino Unido, que lo hemos escrito en la propiedad como Reino_Unido, o puedes tambien escribirlo como ReinoUnido, todo junto).

Quiero cambiar un nombre de celda a otra celda

Si tienes que modificar alguna referencia, haz clic sobre su nombre, cambia su nombre y/o selecciona la nueva celda, y haz clic sobre el botón Modificar.

También puedes hacer clic sobre el botón Eliminar, y crearla nueva.

Quiero asignar un grupo (un rango) de celdas a un nombre

También puedes hacerlo. Escribe el nombre. Haz clic en Asignado a, y luego, selecciona el rango de celdas. Haz clic sobre el botón Añadir.

 

Asignar un rango de celdas a un nombre

 

Nota: Los rangos tienen que ser rectangulares (no se admiten rangos múltiples).

El botón Volver

Para regresar a la Hoja1, vamos a agregar un botón Volver. Primero, sin cerrar el diálogo Definir nombres, nos pasamos a la Hoja1. Creamos un nuevo nombre, que llamamos Inicio, y le asignamos la celda A1.

 

Bautizamos la celda A1 de la Hoja1 como Inicio

 

Ya podemos cerrar este diálogo.

Ahora selecciona un botón cualquiera. Cópialo, pasa a la Hoja2 y pégalo en el lugar correspondiente.

Cambia sus dimensiones, para que se vea más grande.

Cambia su propiedad Título a Volver, y su propiedad Información adicional a Inicio.

Desde la barra de herramientas Campos de control de formulario, desactiva el modo Diseño (segundo botón) y cierra la barra de herramientas.

 

Insertar un botón Volver en la Hoja2 de la hoja de cálculo Calc

 

Guarda tu trabajo. Ya hemos terminado.

Algunos ajustes finales

Si quieres dejar más acabado el proyecto, puedes por ejemplo:

  • Cambia la escala de la Hoja2 para que se muestre todo el mapa, por defecto
  • Cambia el nombre de las hojas 2 y 1 a Mapa y Datos, respectivamente, y elimina las hojas sobrantes.
  • Desde la barra de herramientas lateral, Panel Propiedades, desactiva Mostrar líneas de cuadrícula de la celda

Y cualquier otra cosa que se te ocurra.

Cómo funciona

Al hacer clic sobre un botón asociado a un país se desencadena el evento Botón del ratón soltado. El evento llama a la macro BtPais_Clic, y le pasa un objeto Evento que llamamos oEv. Desde este objeto evento podemos identificar el botón pulsado, y el país asociado al botón mediante su propiedad Tag del objeto Model.

Conocido el pais que queremos alcanzar, tan sólo tenemos que saltar a la celda o rango de celdas que tienen ese nombre, tarea que realiza el procedimiento Ir_A. La macro ha sido creada con la grabadora de macros, capturando lo que hace Calc al hacer clic sobre un nombre del cuadro de nombres para saltar a una celda. Hemos ajustado algunas cosillas para hacerla reutilizable por la macro asociada al botón, y poco más.

El botón Volver sigue el mismo esquema de funcionamiento, y puede utilizar exactamente los mismos procedimientos que el resto de botones. El kit de la cuestión es utilizar la propiedad Tag del botón. Así de sencillo, y así de complejo.

Para ampliar a más paises no es necesario tocar nada del código; tan sólo agregar más botones, cambiando su propiedad Información adicional al nombre del país buscado, y bautizar las celdas correspondientes en la hoja del mapa.

Puedes descargar el libro de Calc que hemos creado haciendo clic aquí: Ir al Mapa.ods

No olvides dejarnos tu comentario. Y si te ha gustado, puedes votar (abajo a la derecha) y/o apoyarnos haciendo clic en los enlaces de nuestros patrocinadores (arriba del todo, panel lateral derecho).

1 comentario

Comentario De: Charbel [Visitante]  

Quiero hacer algo muy similar, pero en algo estoy fallando. :C Lo que necesito, es que si en la hoja uno dice por ejemplo Pasteles, al dar Clic a esa celda o ese botón, me envíe, digamos, a la hoja 35, llamada también pasteles, donde habrá decenas de recetas. Aún no le entiendo muy bien a lo de lso Macros, y no se si hay alguna otra forma para hacer lo que busco. :c Gracias por leerme. :D

21.01.21 @ 05:59 Reply to this comment


Form is loading...