libreoffice-books/source/es/LibreOffice_Macros_con_Basic/02_Conceptos_iniciales.md

13 KiB

Conceptos iniciales

Como soy una persona peresoza no me gusta trabajar, por eso, cuando descubrí lo que se podía hacer con los lenguajes de programación, comprendí que esto es lo que necesitaba (y lo que me gustaba). Los lenguajes de programación nos permiten ordenarle a la computadora que haga por nosotros esas tareas complejas, repetitivas y tediosas (también las divertidas). Aquí aprenderemos como hacer en LibreOffice, esas tareas complejas, repetitivas y tediosas con uno de sus varios lenguajes con los que se puede programar en él, Basic.

Las instrucciones que usamos para decirle al programa qué hacer, como, cuando, el orden y la secuencia en que queremos que lo haga, las llamaremos macros, estas macros podemos hacerlas de forma "semiautomática" con la Grabadora de macros (por ahora sólo presente en Writer y Calc) o escribirlas nosotros desde cero, a mi criterio, a esta grabadora todavía le falta madurar un poco, por lo cual, crearemos nuestras macros desde cero, veras que no es tan complicado y si, muy divertido.

¿Donde se guardan las macros?

Lo primero que tienes que aprender (y recordar) es que las macros se guardan en módulos, estos a su vez se guardan y organizan en bibliotecas, las cuales, están contenidas dentro de documentos, con lo cual tendremos el siguiente diagrama, por cierto, hecho en Draw.

Donde se guardan las macros

Todos los documentos tienen una biblioteca especial predeterminada llamada Standard, a esta biblioteca le puedes agregar y eliminar módulos pero no puedes eliminarla. Los módulos, además de macros pueden contener funciones y los documentos también pueden contener diálogos.

En la siguiente imagen puedes ver un documento (codigo_libro.ods) con una biblioteca (mi_biblioteca), un modulo (mi_modulo) y dos macros.

Organizar macros

Las macros guardadas en documentos, solo estarán disponibles mientras el documento este abierto y con las macros activadas. Por seguridad, siempre activa macros de confianza, es decir, que sepas exactamente que hacen o al menos quien la hizo.

Las macros también pueden guardarse en el perfil del usuario, con lo que estarán disponibles solo para este usuario.

Mis macros

Además, se pueden guardar dentro del directorio de LibreOffice con lo que estarán disponibles para todos los usuarios, solo un usuario con permisos de escritura en estos directorios, generalmente un administrador, puede guardarlas ahí. Todas las macros de ayuda y ejemplo que incorpora LibreOffice, están en este espacio.

Macros de LibreOffice

Seguridad en macros

Mencionamos que las macros, para poder ejecutarse, deben de estar activas. Dependiendo del nivel de seguridad establecido en LibreOffice, veras uno u otro mensaje o tal vez ninguno.

Por default, al instalar, el nivel es alto, así que al abrir un documento con macros veras el siguiente mensaje y las macros estarán desactivadas.

Nivel de seguridad alto

Mi recomendación es establecer el nivel en medio, para esto, vamos el menú Herramientras->Opciones... o presionando el método abreviado de teclado Alt+F12, en el cuadro de diálogo abierto, en el control de árbol izquierdo, selecciona la rama LibreOffice->Seguridad y del lado derecho da click en el botón de comando Seguridad de macros...

En el cuadro de diálogo que se abre, selecciona el botón de opcion: Medio y guarda los valores con el botón de comando Aceptar de cada cuadro de diálogo.

Ahora, al abrir un documento con macros, debes de ver el siguiente mensaje donde tendrás la opción de activar o desactivar según confies o no en la fuente.

Nivel de seguridad medio

IMPORTANTE: Siempre verifica la fuente de tus macros, ante la duda, es mejor que las desactives.

Mi primer macro

Vamos a crear paso a paso nuestra primer macro. Abre Calc o tu aplicación LibreOffice favorita y guardala en el lugar que quieras con el nombre que quieras. Te recomiendo usar una carpeta de trabajo exclusiva para los temas que veamos en este libro.

Ve al menú Herramientras->Macros->Organizar macros->Basic... y selecciona la librería Standard del documento que hayas creado y da click en el botón de comando Nuevo.

Organizar macros

La acción anterior te permitirá establecer el nuevo nombre para un nuevo módulo, establece el nombre que quieras y da click en el botón de comando Aceptar.

Nuevo módulo

Inmediatamente deberás ver el entorno de desarrollo integrado (EDI de aquí en adelante) que incorpora LibreOffice para Basic.

Nuevo módulo

Este EDI, será nuestro centro de trabajo para todo, así que es muy importante te familiarices con él. Nota que al crear un nuevo módulo, el sistema agrega ya cierta información, lo que ves ahí es la estructura más básica de una macro.

Sub Main

End Sub

Reemplaza este contenido con el siguiente código:

Sub mi_primero_macro()
    MsgBox "Podrido Mundo"
End Sub

Vamos a ejecutar la macro, es decir, a que haga lo que hemos códificado que haga. Asegurate de tener el cursor de escritura dentro de la macro, en este caso, en la línea con la palabra MsgBox y presiona la tecla F5.

Este debe ser el resultado:

Mi primer macro

Si ves el resultado anterior, felicidades, ya eres todo un programador. Ya sabes el como, pero espera, no eres todavía un programador completo, te falta saber el porqué para lograr lo que decía mi entrañable profesor de topografía:

El hombre teórico sabe "por qué", el hombre practico sabe el "cómo", lo ideal es saber "cómo" y "por qué"...

Para entender el ¿por qué?, analizaremos cada linea de nuestra primer macro en el siguiente tema.

Analizando nuestra primer macro

Toda macro tiene la estructura:

Sub nombre_de_la_macro()

    REM Aquí va el código de la macro

End Sub

Las palabras Sub, REM y End Sub, son palabras claves de Basic. A las palabras claves también se les conoce como reservadas ya que solo el lenguaje, en este caso Basic, puede hacer uso de ellas, por ejemplo, no puedes escribir una macro como la siguiente:

Sub sub()

    REM Aquí va el código de la macro

End Sub

El código anterior, si intentas ejecutarlo, debe producirte un error de ejecución, más adelante aprenderemos a controlar algunos tipos de errores.

En la línea:

    MsgBox "Podrido Mundo"

Tenemos una nueva palabra clave de Basic: MsgBox que al mismo tiempo, es una instrucción, es decir, una palabra especial, que el lenguaje, en conjunto con el EDI, reconoce de modo diferente y "realiza", "hace", "ejecuta", una tarea especifica. ¿Que tarea? MsgBox muestra un "mensaje" en un cuadro de dialogo, ¿qué mensaje?, como habrás notado (por que de aquí en adelante tendrás que ser muy observador), el mensaje que muestra es el que "nosotros" le indicamos delante de ella, y como es una "cadena de texto", lo tenemos que hacer entre comillas y separada de la instrucción por un espacio, ¿sucederá lo mismo con números?, ¿y con fechas o algún otro valor?...

    MsgBox 1234567890

    MsgBox 15/01/1974

    MsgBox 1dfgdfh245

Realiza todos las pruebas que quieras y me cuentas qué sucede.

Observa la primer linea de la macro que acabas de hacer, y que, si has seguido al pie de la letra, no tendrías que haber modificado:

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

La primer palabra (REM), también es una palabra clave Basic y lo que "hace" es decirle al programa (nuestra macro), que todo lo haya frente a ella es un comentario. El lenguaje se lo saltara olímpicamente sin hacerle caso. Comentar las lineas de código es una practica ampliamente recomendada y útil, sobre todo, cuando las macros van creciendo de tamaño y complejidad. Así que, asume esta recomendación "casi" como una regla, siempre comenta tus lineas de código.

Por ahí he leído que un código bien escrito no necesitaba comentarios, pero como nosotros somos “novatos” haremos caso omiso de ese comentario, pues como dijo alguna vez Ling Yu Tan -me gusta la gente amateur-. Así que ve al código de nuestra macro y comenta la linea que le agregaste, de modo que te quede, así:

    REM Muestra un mensaje en un cuadro de dialogo
    MsgBox "Podrido Mundo"

Los comentarios, también puedes establecerlos con una comilla simple (')

    'Muestra un mensaje en un cuadro de dialogo
    MsgBox "Podrido Mundo"

Además, podemos agregarlos, al final de la linea de código:

    MsgBox "Podrido Mundo"  REM Muestra un mensaje de dialogo
    MsgBox "Podrido Mundo"  'Muestra un mensaje de dialogo

Reitero, procura comentar la mayor parte de tu código, tu memoria te lo agradecerá, así como todos los programadores con los que compartas tu código, si decides que sea software libre, como te recomiendo que sea.

Entonces, reiterando. Toda macro empieza con la palabra clave Sub y termina con las palabras claves End Sub. Toma macro debe tener un nombre, para nuestro ejemplo hemos usado: mi_primero_macro, este nombre debe cumplir algunas sencillas reglas:

  1. No puede llevar espacios.
  2. No puede iniciar con un número.
  3. No debe repetirse el nombre de la macro, dentro del modulo en que se declara, o sea, no puede haber dos que se llamen igual.

Si se viola esta última regla, la intentar ejecutar cualquiera de las dos, obtendrás el mensaje de error:

Mi primer macro

Observa la primer linea del mensaje: rror de sintaxis de BASIC, aquí, la palabra importante es; sintaxis, que, si nos atenemos a lo que dice la Doña Real Academia Española, quiere decir:

sintaxis

(Del lat. syntaxis, y este del gr. σύνταξις, de συντάσσειν, coordinar).

  1. f. Gram. Parte de la gramática que enseña a coordinar y unir las palabras para formar las oraciones y expresar conceptos.

  2. f. Inform. Conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programación.

De estas definiciones, la que nos interesa es la numero dos, trata de recordarla -Conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programación-.

A lo largo de este libro, aprenderemos e implementar este conjunto de reglas, las cuales, te confesaré, no son tantas ni tan complejas y como seguro habrás notado, el EDI nos informa muchas veces cuando algo anda mal en la sintaxis.

El EDI identificara cada línea de código a ejecutar de dos maneras, cuando encuentre un salto de línea o cuando existan dos puntos, como en:

    Sub sentencias_en_una_sola_linea()
        MsgBox "Estas es una sentencia" : MsgBox "Esta es otra sentencia"
    End Sub

En sentencias largas, puedes usar el carácter de continuación de línea, que es el guion bajo (_), pero debes de recordar que es una sola sentencia:

    Sub sentencia_larga()
        MsgBox "Estas es una linea larga de código, se puede dividir " & _
            "usando el guión bajo, como en este ejemplo"
    End Sub

Basic no distingue mayúsculas de minúsculas en ninguna parte de su código, todas las formas siguientes son válidas sintácticamente.

  • Combinación
    Sub Mi_Primer_Macro()
        MsgBox "Podrido Mundo"
    End Sub
  • Solo mayúsculas
    SUB MI_PRIMER_MACRO()
        MSGBOX "Podrido Mundo"
    END SUB
  • Solo minúsculas
    sub mi_primer_macro()
        msgbox "Podrido Mundo"
    end sub

En Basic, es común la primer forma, pero en este libro usaremos una combinación de la primer para las palabras claves de Basic, y de la última para lo demás.

    Sub mi_primer_macro()
        MsgBox "Podrido Mundo"
    End Sub

El EDI

Ahora el EDI cuenta con algunas herramientas útiles al escribir código, para activarlas sigue estos pasos.

Ve al menú Herramientras->Opciones, selecciona la rama LibreOffice->Avanzado. Activa la casilla de verificación Activar funcionalidades experimentales, acepta los cambios y reinicia LibreOffice.

Activar

Regresa a Herramientras->Opciones, debes ver una nueva rama debajo de LibreOffice que se llama EID Basic. Activa todas las casillas de verificación de esta sección.

EDI Basic

Antes de aceptar los cambios, ve a la rama LibreOffice->Tipos de letra, en la sección Configuración de tipos de letra para HTML, Basic y SQL puedes establecer una mejor fuente para el editor de código y aumentar su tamaño si lo requieres, los viejitos ya lo requerimos.

Tipo de letra

Con esto estamos listos para iniciar nuestro camino en el aprendizaje de macros en LibreOffice con este sencillo lenguaje que es Basic. No existen atajos, si se logra en 21 días como más de un libro por ahí lo "vende", solo la practica diaria te dará la desenvoltura para escribir tus macros, así que practica mucho.