Ejecutar Python en Calc a través del sistema de macros de LibreOffice.

Si un script de Python se ejecuta desde la terminal pero no puede leer ni modificar la hoja de cálculo abierta en Calc, probablemente se esté ejecutando fuera de LibreOffice. Una macro de Python para Calc debe ejecutarse dentro del proceso de LibreOffice, donde LibreOffice proporciona el contexto del documento activo. Guarda el script como un módulo en la carpeta de scripts de Python de tu usuario, exporta su función g_exportedScriptsy ejecútala desde el cuadro de diálogo de macros de Calc.

Este es el método más sencillo para automatizar una pequeña tarea vinculada al libro de trabajo abierto. La ayuda actual de LibreOffice sobre scripts de Python describe tanto las macros integradas en el proceso como los scripts de Python conectados por separado; los pasos que se describen a continuación utilizan el método integrado en el proceso.

¿Por qué un script de Python normal no ve la hoja de cálculo abierta?

LibreOffice expone el documento actual a una macro de Python en ejecución a través de la variable global XSCRIPTCONTEXT. Un script ejecutado con su pythoncomando habitual es un proceso independiente, por lo que la variable global no está disponible automáticamente. Aun así, puede comunicarse con LibreOffice, pero esto requiere configurar una conexión UNO a un proceso de Office que ya esté en ejecución. Para la primera macro, ejecute la función dentro de LibreOffice.

Una macro de Python es una función dentro de un .pymódulo. La g_exportedScriptstupla del módulo le indica a LibreOffice qué funciones debe mostrar en su lista de macros. Estos detalles están documentados en la guía de programación de Python de LibreOffice .

¿Cómo se añade una macro de Python a Calc?

1. Localiza la carpeta de scripts de Python del usuario.

Utilice la carpeta "Mis macros " si desea un script que se ejecute desde cualquier documento de LibreOffice abierto en su cuenta de usuario. LibreOffice documenta la carpeta en %APPDATA%\LibreOffice\4\user\Scripts\pythonWindows, $HOME/.config/libreoffice/4/user/Scripts/pythonLinux y macOS. Si las Scripts/pythoncarpetas aún no existen, créelas. La referencia de ubicaciones de scripts también explica los demás contenedores de macros: macros de aplicación y macros incrustadas en un documento.

Un archivo Python llamado hello_calc.py en la carpeta Scripts/python del usuario de LibreOffice.
Coloca el módulo de macros en la carpeta Scripts/python del usuario para que LibreOffice pueda incluirlo en Mis macros.

Las macros de los documentos se almacenan dentro de un archivo específico y solo se puede acceder a ellas mientras el documento esté abierto. Para una utilidad personal reutilizable, la carpeta Mis macros suele ser más fácil de mantener. Evite modificar la carpeta de macros global de LibreOffice, ya que podría requerir permisos de administrador.

2. Crea y exporta una pequeña función de prueba.

Abra un editor de texto plano, cree hello_calc.pyen la carpeta de arriba y agregue:

def hello_calc(*args):
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets[0]
    sheet.getCellRangeByName("A1").setString("Hello from Python")

g_exportedScripts = (hello_calc,)

La función obtiene el documento actualmente conectado a la llamada a la macro, selecciona su primera hoja y escribe una cadena de prueba inofensiva en A1. La última línea es importante: sin la tupla exportada, la función podría no aparecer como una macro ejecutable. Guarde el archivo como texto plano con la .pyextensión, no como un documento de texto enriquecido ni como un archivo que termine en .py.txt.

Código macro de Python que utiliza XSCRIPTCONTEXT y lista hello_calc en g_exportedScripts
La función exportada utiliza XSCRIPTCONTEXT para acceder al documento abierto y escribir un valor de prueba en la celda A1.

LibreOffice proporciona XSCRIPTCONTEXTla variable al módulo macro. No la pasa automáticamente a los módulos importados por tu código, así que mantén la primera prueba aislada. Si más adelante divides las funciones reutilizables en otros módulos, sigue las instrucciones de LibreOffice para la importación de módulos de Python .

3. Abra un archivo de Calc y ejecute la función exportada.

  1. Abra una hoja de cálculo de prueba en Calc. Utilice una copia o un libro de trabajo en blanco durante el desarrollo.
  2. Seleccione Herramientas > Macros > Ejecutar macro .
  3. En la lista de bibliotecas, expanda Mis macros , elija el módulo Python y seleccione hello_calcentre los nombres de las macros.
  4. Haz clic en Ejecutar .

La misma función se puede ejecutar desde la extensión APSO, que LibreOffice recomienda para la creación de scripts de Python dentro del proceso y que además proporciona una consola de Python. No necesita APSO para el flujo básico de ejecución de macros que se describe aquí.

Selector de macros de LibreOffice con hello_calc resaltado en Mis macros y el botón Ejecutar visible
Seleccione la función exportada hello_calc en Mis macros y, a continuación, ejecútela desde Calc.
LibreOffice Calc muestra "Hola desde Python" en la celda A1 seleccionada.
Un valor visible en A1 confirma que la macro de prueba llegó al documento de Calc y modificó una celda.

¿Qué ocurre si la macro no existe o parece no hacer nada?

Realice estas comprobaciones en orden, en lugar de cambiar la configuración de seguridad general:

  • El módulo no aparece en la lista: confirme que el archivo se encuentra en la Scripts/pythonruta de usuario exacta, tiene un .pysufijo y contiene una g_exportedScriptstupla escrita correctamente. Vuelva a abrir el cuadro de diálogo de macros; si LibreOffice aún no muestra el archivo recién agregado, ciérrelo y reinícielo, y luego vuelva a comprobarlo.
  • Falta el nombre de la macro: asegúrese de que la tupla exportada incluya el objeto de función, por ejemplo (hello_calc,). La coma convierte esto en una tupla de Python de un solo elemento.
  • No aparece nada en la terminal: la salida print()no está disponible cuando las macros de Python se ejecutan desde el cuadro de diálogo de macros estándar. La prueba anterior escribe en A1, por lo que el resultado es visible en la hoja. Para la depuración interactiva, la consola de APSO muestra la salida.
  • Se produjo un error de importación: la instalación de un paquete para Python en su sistema no garantiza que el entorno de ejecución de Python de LibreOffice pueda importarlo. El paquete debe estar disponible en la ruta de Python del entorno de ejecución; la guía oficial de importación describe las rutas de los módulos de usuario y compartidos. Comience probando la macro sin importaciones opcionales.
  • Aparece una advertencia de seguridad: ejecute únicamente los scripts que haya escrito o revisado y en los que confíe. La seguridad de macros existe para limitar el código inseguro; no reduzca el nivel de seguridad global solo para ejecutar una macro de un documento desconocido. Consulte las opciones de seguridad de macros de LibreOffice si necesita comprender una advertencia.

Elija el enfoque de proceso externo solo cuando su automatización deba iniciarse desde una terminal, un planificador u otra aplicación. LibreOffice requiere que inicie el proceso de Office con una tubería o un socket y se conecte a través de su puente UNO; un script independiente común no es equivalente a una macro de Calc dentro del mismo proceso.

¿Cómo se puede verificar que la macro funcionó?

Tras hacer clic en Ejecutar, observe la celda A1 de la primera hoja. Debería contener «Hola desde Python» y la barra de fórmulas debería mostrar el mismo texto al seleccionar A1. Si la celda permanece sin cambios, confirme que el libro de trabajo deseado estaba activo y que la macro se seleccionó en «Mis macros». Una vez superada esta prueba mínima, sustituya el código de prueba por su cálculo real y pruébelo en una copia del libro de trabajo antes de utilizarlo con datos importantes.

Dejar un comentario

Proteja el texto del autor seleccionado con una contraseña de sección.

Proteja el texto del autor seleccionado con una contraseña de sección.

Bloquea un pasaje específico para evitar ediciones rutinarias sin comprometer la usabilidad del resto del documento de Writer, y descubre cuándo el cifrado de archivos es la mejor opción.

Hacer que el texto de la hoja de cálculo sea legible en el modo oscuro de LibreOffice Calc.

Hacer que el texto de la hoja de cálculo sea legible en el modo oscuro de LibreOffice Calc.

Solucione los problemas de texto ilegible en las hojas de cálculo revisando el tema, el color de la fuente de las celdas, los rellenos y el formato condicional en Calc.

¿LibreOffice Calc muestra las fórmulas como texto? Restaurar los resultados.

¿LibreOffice Calc muestra las fórmulas como texto? Restaurar los resultados.

Descubre por qué Calc muestra el texto de la fórmula en lugar de los valores calculados y corrige el modo de visualización, las celdas con formato de texto, los apóstrofes o los resultados obsoletos.

Combinar letras de Writer con un logotipo y campos de hoja de cálculo

Combinar letras de Writer con un logotipo y campos de hoja de cálculo

Crea una combinación de correspondencia reutilizable en Writer con los datos de destinatarios de Calc y una imagen incrustada compartida, y luego previsualiza y guarda las cartas personalizadas.

Limitar los diagnósticos opcionales y actualizar los datos en LibreOffice.

Limitar los diagnósticos opcionales y actualizar los datos en LibreOffice.

Desactive las estadísticas de actualización opcionales y las notificaciones de informes de errores de LibreOffice, y luego compruebe qué abarcan los ajustes y cómo verificarlos.

Utilice expresiones regulares en LibreOffice Writer para editar texto por lotes.

Utilice expresiones regulares en LibreOffice Writer para editar texto por lotes.

Limpia el espaciado, encuentra texto estructurado y reorganiza los nombres con patrones de expresiones regulares de Writer que puedes previsualizar antes de reemplazarlos.

Configurar los párrafos en árabe y hebreo para que se escriban de derecha a izquierda en Writer.

Configurar los párrafos en árabe y hebreo para que se escriban de derecha a izquierda en Writer.

Habilita los controles bidireccionales de Writer, configura el flujo de párrafos de derecha a izquierda y revisa el texto mixto en árabe o hebreo sin alterar las palabras y los números en inglés.

Restaura Calibri y Arial en LibreOffice sin tener que adivinar.

Restaura Calibri y Arial en LibreOffice sin tener que adivinar.

Instale fuentes de Linux compatibles con el sistema métrico o configure las alternativas de LibreOffice, teniendo en cuenta las diferencias en las licencias y el diseño de las fuentes de Microsoft.

Crea archivos PDF rellenables a partir de formularios en LibreOffice Writer.

Crea archivos PDF rellenables a partir de formularios en LibreOffice Writer.

Agregue campos de texto utilizables, casillas de verificación y menús desplegables en Writer, y luego exporte un PDF que los destinatarios puedan completar y guardar.

Haz que los PDF de LibreOffice conserven las fuentes que usaste.

Haz que los PDF de LibreOffice conserven las fuentes que usaste.

Corrige las fuentes que falten o que hayan sido sustituidas en los archivos PDF de LibreOffice Writer, elige el perfil de exportación adecuado y verifica qué fuentes están incrustadas antes de compartirlas.