Review chapter 02

This commit is contained in:
Mauricio Baeza 2021-10-27 22:14:49 -05:00
parent 02448a721a
commit 3ae289fc04
4 changed files with 25 additions and 19 deletions

View File

@ -1,2 +1,5 @@
v 0.0.1 [18-sep-2021]
v 0.2.0 [18-oct-2021]
- Conceptos iniciales
v 0.1.0 [18-sep-2021]
- Introducción a Basic

View File

@ -1 +1 @@
LibreOffice Macros con Basic v0.0.1
LibreOffice Macros con Basic v0.2.0

View File

@ -2,7 +2,7 @@
Como soy una persona perezosa, 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 ordenar a la computadora que haga por nosotros esas tareas complejas, repetitivas y tediosas (y también las divertidas). Aquí aprenderemos cómo hacer en LibreOffice esas tareas complejas, repetitivas y tediosas mediante uno de los varios lenguajes con los que se puede programar en él: Basic.
Las instrucciones que usamos para decirle al programa qué hacer, cómo, cuándo, en qué orden y con qué secuencia queremos que lo haga las llamaremos **_macros_**. Estas macros podemos crearlas de forma semiautomática con la **Grabadora de macros** (por ahora solo presente en Writer y Calc) o escribirlas nosotros desde cero. En mi opinión, a esta grabadora todavía le falta madurar un poco, por lo cual en este libro crearemos nuestras macros desde cero. Verás que no es tan complicado y sí muy divertido.
Las instrucciones que usamos para decirle al programa qué hacer, cómo, cuándo, en qué orden y con qué secuencia queremos que lo haga las llamaremos **macros**. Estas macros podemos crearlas de forma semiautomática con la **Grabadora de macros** (por ahora solo presente en Writer y Calc) o escribirlas nosotros desde cero. En mi opinión, a esta grabadora todavía le falta madurar un poco, por lo cual en este libro crearemos nuestras macros desde cero. Verás que no es tan complicado y sí muy divertido.
## ¿Dónde se guardan las macros?
@ -11,15 +11,15 @@ Lo primero que tienes que aprender (y recordar) es que las macros se guardan en
![Diagrama conceptual de la organización de las macros](img/001_macros.png)
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_**.
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 cómo se almacenan y organizan, dentro de un documento (codigo_libro.ods), una biblioteca creada por el usuario (mi_biblioteca), la biblioteca **Standard**, un módulo (mi_modulo) y dos macros.
![Cómo se organizan y almacenan las macros en LibreOffice](img/002_macros.png)
Las macros guardadas en documentos solo estarán disponibles mientras el documento esté abierto y si la opción **Seguridad de macros** está activada en algún nivel que coincida con el origen de confianza de nuestras macros. Por seguridad, solo activa macros de confianza, es decir, aquellas que sepas exactamente qué hacen o al menos quién la hizo.
Las macros guardadas en documentos solo estarán disponibles mientras el documento esté abierto y si la opción **Seguridad de macros** está activada en algún nivel que coincida con el origen de confianza de nuestras macros. Por seguridad, solo activa macros de confianza, es decir, aquellas que sepas exactamente qué hacen o al menos quién la hizo.
Las macros asimismo pueden guardarse en el perfil del usuario, con lo que estarán disponibles solo para este usuario. Estas son las que aparecen en la biblioteca **Standard**.
Las macros asimismo pueden guardarse en el perfil del usuario, con lo que estarán disponibles solo para este usuario. Estas son las que aparecen bajo **Mis macros** en la biblioteca **Standard** o en nuevas bibliotecas y modulos que puedes agregar.
![Mis macros](img/003_macros.png)
@ -32,11 +32,11 @@ Finalmente, también las macros se pueden guardar dentro del directorio del prog
Mencionamos que las macros, para poder ejecutarse, deben de estar activas. Dependiendo del nivel de seguridad establecido en LibreOffice, verás uno u otro mensaje o tal vez ninguno.
De manera predeterminada, al instalar el programa, la opción **Seguridad de macros** está ajustada en el nivel de seguridad **Alto**, así que al abrir un documento con macros verás el siguiente mensaje, lo que indica que las macros estarán desactivadas.
De manera predeterminada, al instalar el programa, la opción **Seguridad de macros** está ajustada en el nivel de seguridad **Alto**, así que al abrir un documento con macros verás el siguiente mensaje, lo que indica que las macros estarán desactivadas.
![Nivel de seguridad alto](img/005_macros.png)
Mi recomendación es que establezcas el nivel de seguridad en **Medio**. Para esto, ve al menú **Herramientas > Opciones > LibreOffice > Seguridad > Seguridad de macros** o usa el atajo de teclado (también llamado método abreviado de teclado) Alt+F12. Al abrirse el diálogo **Seguridad de macros**, haz clic en la pestaña **Nivel de seguridad** y después en la opción **Medio**. Cierra los diálogos para guardar el nuevo valor pulsando los respectivos botones **Aceptar**.
Mi recomendación es que establezcas el nivel de seguridad en **Medio**. Para esto, ve al menú **Herramientas > Opciones > LibreOffice > Seguridad > Seguridad de macros** o usa el atajo de teclado (también llamado método abreviado de teclado) Alt+F12. Al abrirse el diálogo **Seguridad de macros**, haz clic en la pestaña **Nivel de seguridad** y después en la opción **Medio**. Cierra los diálogos para guardar el nuevo valor pulsando los respectivos botones **Aceptar**.
Ahora, al abrir un documento con macros, debes ver el siguiente diálogo, donde tendrás la opción de activar o desactivar las macros, según confíes o no en la fuente de origen.
@ -49,7 +49,7 @@ Ahora, al abrir un documento con macros, debes ver el siguiente diálogo, donde
Vamos a crear, paso a paso, nuestra primera macro. Abre Calc o tu aplicación LibreOffice favorita y guárdala 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ú **Herramientas > Macros > Organizar macros > Basic** y selecciona la biblioteca **Standard** del documento que hayas creado. Da clic en el botón **Nuevo**.
Ve al menú **Herramientas > Macros > Organizar macros > Basic** y selecciona la biblioteca **Standard** del documento que hayas creado. Da clic en el botón **Nuevo**.
![Organizar macros](img/007_macros.png)
@ -57,7 +57,7 @@ La acción anterior te permitirá establecer el nuevo nombre para un nuevo módu
![Nuevo módulo](img/008_macros.png)
Inmediatamente deberás ver el **_entorno de desarrollo integrado_** (EDI, de aquí en adelante) que incorpora LibreOffice para Basic.
Inmediatamente deberás ver el **entorno de desarrollo integrado** (EDI, de aquí en adelante) que incorpora LibreOffice para Basic.
![Nuevo módulo en EDI](img/009_macros.png)
@ -77,17 +77,17 @@ Sub mi_primer_macro()
End Sub
```
Vamos a **_ejecutar la macro_**, es decir, a pedirle que haga lo que hemos codificado que haga. Asegúrate de tener el cursor de escritura *dentro* de la macro. En este caso, en la línea con la palabra **MsgBox**. Presiona la tecla F5.
Vamos a **ejecutar la macro**, es decir, a pedirle que haga lo que hemos codificado que haga. Asegúrate de tener el cursor de escritura *dentro* de la macro. En este caso, en la línea con la palabra **MsgBox**. Presiona la tecla F5.
Este debe ser el resultado:
![Mi primera macro](img/010_macros.png)
Si ves el resultado anterior, ¡felicidades! Ya eres todo un programador. Ya sabes el *cómo* pero, espera, no eres todavía un programador completo, te falta saber el *por qué*, para que logres lo que decía mi entrañable profesor de topografía:
Si ves el resultado anterior, ¡felicidades! Ya eres todo un programador. Ya sabes el *cómo* pero, espera, no eres todavía un programador completo, te falta saber el *por qué*, para que logres lo que decía mi entrañable profesor de topografía:
> El hombre teórico sabe el "por qué",
> el hombre práctico sabe el "cómo";
> lo ideal es saber "cómo" y "por qué"
> lo ideal es saber "cómo" y "por qué"
Para entender el *¿por qué?* analizaremos cada línea de nuestra primera macro en el siguiente tema.
@ -104,7 +104,7 @@ Sub nombre_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 **_palabras reservadas_**, ya que solo el lenguaje de programación, en este caso Basic, puede hacer uso de ellas. Por ejemplo, *no puedes* escribir una macro como la siguiente:
Las palabras **Sub**, **REM** y **End Sub** son **palabras claves de Basic**. A las palabras claves también se les conoce como **palabras reservadas**, ya que solo el lenguaje de programación, en este caso Basic, puede hacer uso de ellas. Por ejemplo, *no puedes* escribir una macro como la siguiente:
```vbnet
Sub sub()
@ -114,7 +114,7 @@ Sub sub()
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.
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:
@ -122,7 +122,7 @@ 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 o ejecuta una tarea especifica. ¿Qué 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 este es una **_cadena de texto_**, lo tenemos que hacer entre comillas y separada de la instrucción por un espacio.
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 o ejecuta una tarea especifica. ¿Qué 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 este 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…?
@ -142,7 +142,7 @@ Observa la primer linea de la macro que acabas de hacer y que, si has seguido al
REM ***** BASIC *****
```
La primer palabra (**REM**), también es una palabra clave de Basic y lo que *hace* es decirle al programa (nuestra macro), que todo lo que hay frente a ella es un comentario. Es decir, el lenguaje de programación 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 líneas de código*.
La primer palabra, **REM**, también es una palabra clave de Basic y lo que *hace* es decirle al programa (nuestra macro), que todo lo que hay frente a ella es un comentario. Es decir, el lenguaje de programación 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 líneas 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í:
@ -161,8 +161,8 @@ Los comentarios también puedes establecerlos con una comilla simple '.
Además, podemos agregarlos al final de la linea de código:
```vbnet
MsgBox "Podrido Mundo" REM Muestra un mensaje de diálogo
MsgBox "Podrido Mundo" 'Muestra un mensaje de diálogo
MsgBox "Podrido Mundo 1" REM Muestra un mensaje de diálogo
MsgBox "Podrido Mundo 2" 'Muestra un mensaje de diálogo
```
Insisto, procura hacer comentarios sobre 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.
@ -264,3 +264,6 @@ Antes de aceptar los cambios, ve a **Herramientas > Opciones > LibreOffice > Tip
![Tipo de letra](img/014_macros.png)
Con esto ya estamos listos para iniciar nuestro camino en el aprendizaje de macros en LibreOffice, con este sencillo lenguaje que es Basic. No existen atajos. Ni 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.
¡Feliz programación!