
José Francisco Martínez Jiménez.
Funcionario jubilado
Servicio de Gestión Contable
Intervención General de la Junta de Andalucía
Consejería de Hacienda y Financiación Europea
Libre Office, casos prácticos X
Es muy conveniente antes haber leído y comprendido todos los artículos relacionados con LibreOffice Calc publicados en el apartado Tecnología práctica de esta revista.
Para la confección de este artículo se ha utilizado LibreOffice Community Writer, Calc e Impress versión 24.8.4 (X86-64 Windows 11) para entornos corporativos.
LibreOffice ha decidido renombrar las versiones indicando el año y el mes de lanzamiento seguido del número de revisión. Así se ha pasado de la versión 7 a la 24.
Caso práctico n.º 21: Crear y asignar una macro a un “atajo de teclado”.
Nivel: Avanzado.
Me han hecho esta pregunta. “Pepe, ¿cómo puedo asignar en Calc una macro a un atajo de teclado para que cuando lo pulse se ejecute esa macro?”
Pues bien, vamos a verlo con un ejemplo y su correspondiente macro.
Para este caso práctico es necesario que os remita al número 17 de esta revista EnRed@2.0 (Caso práctico n.º 18: Macro LibreOffice BASIC (I). UDF: Generar contraseñas). Allí figuran enlaces para aprender a programar en LibreOffice BASIC.
Paso 1. Creación de la macro.
Antes de poder asignar una macro a un atajo de teclado debemos crearla primero (obvio). Vamos a crear una que muestra en una ventana un mensaje con los nombres de todas las hojas del archivo Calc que tengamos abierto en el momento de pulsar el atajo de teclado. Le asignaremos el atajo de teclado <Ctrl + Mayúscula + H> (podéis usar el atajo de teclado que queráis siempre que no esté asignado a otra macro o función de LibreOffice Calc). En la Imagen 1 se muestra el resultado cuando pulsamos el atajo de teclado asignado en un archivo Calc con 10 hojas.

En la Imagen 2 se encuentra el código fuente de esta macro.

Para que esta macro esté disponible para cualquier archivo Calc que tengamos abierto se debe escribir en un módulo de macros especial que se denomina “Module1” (si no le hemos puesto otro nombre) de la biblioteca “Standard” (no se puede cambiar de nombre esta biblioteca) del contenedor de macros llamado “Mis macros” al que se accede por medio del menú Herramientas ► Macros ► Organizar macros► BASIC (Imagen 3).

Y en la ventana que se nos muestra tenemos que pinchar en Mis macros ► Standard ► Module1► Editar, por este orden (Imagen 4).

Para entrar, acto seguido, en el IDE del lenguaje LibreOffice BASIC donde escribiremos nuestra macro (Imagen 5).

Paso 2. Asignación de un atajo de teclado.
Una vez escrita la macro (en el siguiente apartado figura la macro en formato texto para poderla copiar y pegar) y comprobado que no tiene errores pasamos a asignarle un atajo de teclado. Para ello seleccionamos Herramientas ► Personalizar … y en la ventana que aparece pinchamos o seleccionamos siguiendo el orden indicado en la Imagen 6.

Una vez hecho lo anterior ya tendremos disponible el atajo de teclado seleccionado (<Ctrl + Mayúscula + H>) para que se ejecute la macro y nos muestre el nombre de todas las hojas del archivo Calc activo (ejemplo en la Imagen 1). Podemos comprobar que se ha asignado correctamente accediendo de nuevo a la personalización del teclado (Imagen 7).

Macro en formato texto para copiar y pegar.
Public Sub MostrarNombreHojas()
' Muestra un mensaje con los NOMBRES de todas las hojas del archivo Calc
' Atajo de teclado: Ctrl + Mayúscula + H
Dim doc_calc As Object
Dim hojas_doc As Object
Dim nombres_hojas() As String
Dim mensaje As String
Const NUEVA_LINEA As Integer = 13
Const ICONO_STOP As Integer = 16
Const ICONO_INFORMACION As Integer = 64
Const BOTON_ACEPTAR As Integer = 0
‘ Si se produce un error entonces se ejecutan las líneas 29 a 31
On Error Goto ERROR_INESPERADO
‘ Este archivo
doc_calc = ThisComponent
If doc_calc.supportsService(“com.sun.star.sheet.SpreadsheetDocument”) Then
‘ Si es una hoja de cálculo
hojas_doc = doc_calc.getSheets()
‘ Obtenemos sus nombres
nombres_hojas() = hojas_doc.getElementNames()
mensaje = Join(nombres_hojas(), Chr(NUEVA_LINEA))
MsgBox mensaje, BOTON_ACEPTAR + ICONO_INFORMACION, “Hojas en este libro Calc”
End If
Exit Sub
ERROR_INESPERADO:
mensaje = “Se ha producido un ERROR inesperado.” & Chr(NUEVA_LINEA) & _
“Se debe revisar la macro.” & Chr(NUEVA_LINEA)
MsgBox mensaje, BOTON_ACEPTAR + ICONO_STOP, “¡Atención!”
End Sub
Como nadie nace sabiendo, os recomiendo consultar a menudo:
La GUÍA de LibreOffice Calc en español (versión 7.5).
La GUÍA de LibreOffice Calc en inglés (versión 24.8).
Además de los enlaces citados al principio de este artículo que figuran en número 17 de esta revista.
Para finalizar deciros que ha sido un placer colaborar con esta revista pero todo principio tiene un final y este artículo es el último que presentaré para su publicación. Han sido casi siete años, desde 2018, los que he colaborado con esta revista en el apartado de Tecnología Práctica (LibreOffice Calc). Espero, al menos, haber despertado vuestra curiosidad y ganas de aprender más sobre esta herramienta de trabajo.
Sólo me queda dar las gracias a todos vosotros por haber leído y puesto en práctica mis artículos y a los compañeros de la revista por su buen hacer y paciencia.
Muchas gracias por vuestra atención, saludos cordiales y ¡hasta siempre!
Si te ha gustado este artículo, encontrarás más contenidos interesantes en nuestra sección “TECNOLOGIA APLICADA”.
Y te invitamos a ver nuestros anteriores números de EnRed@2.0.