Clic en un botón y saltar a una posición de un mapa en 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.
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:
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:
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:
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.
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.
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.
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.
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.
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
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