Rev.02 de caps.01 y 02. Ortotipografía, estilos y referencias de imágenes

This commit is contained in:
Celia Palacios Gómez Tagle 2021-09-29 00:11:35 -05:00
parent 70a1cbd338
commit 8d7bf3b420
3 changed files with 85 additions and 50 deletions

38
libreoffice-books.geany Normal file
View File

@ -0,0 +1,38 @@
[editor]
line_wrapping=true
line_break_column=120
auto_continue_multiline=true
[file_prefs]
final_new_line=true
ensure_convert_new_lines=true
strip_trailing_spaces=false
replace_tabs=true
[indentation]
indent_width=2
indent_type=0
indent_hard_tab_width=8
detect_indent=false
detect_indent_width=true
indent_mode=2
[project]
name=LibreOffice Books
base_path=/home/simonapetra/Public/libreoffice/libreoffice-books
description=LibreOffice con Macros, libro de Mau
file_patterns=
[long line marker]
long_line_behaviour=1
long_line_column=80
[files]
current_page=1
FILE_NAME_0=0;Markdown;0;EUTF-8;0;1;1;%2Fhome%2Fsimonapetra%2FPublic%2Flibreoffice%2Flibreoffice-books%2Fsource%2Fes%2FLibreOffice_Macros_con_Basic%2F01_Introduccion.md;0;2
FILE_NAME_1=0;Markdown;0;EUTF-8;0;1;1;%2Fhome%2Fsimonapetra%2FPublic%2Flibreoffice%2Flibreoffice-books%2Fsource%2Fes%2FLibreOffice_Macros_con_Basic%2F02_Conceptos_iniciales.md;0;4
[build-menu]
EX_00_LB=_Visualize
EX_00_CM=pandoc %f | lynx -stdin
EX_00_WD=.

View File

@ -1,38 +1,38 @@
# Introducción
> "Quien recibe una idea de mí, recibe instrucción sin disminuir la mía; igual que quien enciende su vela con la mía, recibe luz sin que yo quede a oscuras"
> "Quien recibe una idea de mí, recibe instrucción sin disminuir la mía; igual que quien enciende su vela con la mía, recibe luz sin que yo quede a oscuras."
Thomas Jefferson{author_cite}
Este libro es la revisión completa de mi anterior libro ["Aprendiendo OOo Basic"][1] que estaba orientado al (casi) difunto Apache OpenOffice. Ahora, ha sido reescrito orientado completamente a [LibreOffice][2].
Este libro es la revisión completa de mi anterior libro ["Aprendiendo OOo Basic"][1], el cual estaba orientado al (casi) difunto Apache OpenOffice. Ahora, ha sido reescrito y orientado completamente a [LibreOffice][2].
El propósito de este libro es el mismo del anterior, ayudarte a que tu curva de aprendizaje sea menos pronunciada que la mía, ahora cuento con un poco más de experiencia en el tema, es mi deseo que se vea reflejado en el.
El propósito de este libro es el mismo del anterior: ayudarte a que tu curva de aprendizaje sea menos pronunciada que la mía. Ahora cuento con un poco más de experiencia en el tema y es mi deseo que se vea reflejada en él.
La documentación en nuestro idioma no es precisamente abundante, hacen falta manos para generar documentación de calidad en diferentes estilos para diferentes públicos y niveles. Si cuentas con experiencia en los temas de este libro, puedes ayudar a ampliarlos, puedes ponerte en contacto conmigo si requieres alguna orientación.
La documentación en nuestro idioma no es precisamente abundante. Hacen falta manos para generar documentación de calidad en diferentes estilos para diferentes públicos y niveles. Si cuentas con experiencia en los temas de este libro, puedes ayudar a ampliarlos. También puedes ponerte en contacto conmigo si requieres alguna orientación.
La versión usada para escribir este libro, es la más reciente (en este momento) de LibreOffice (7.2). Siempre asegurate de descargar **únicamente** desde el [sitio oficial][2].
La versión de LibreOffice usada para escribir este libro es la más reciente (en este momento es la 7.2). Siempre asegúrate de descargar el programa **únicamente** desde el [sitio oficial][2].
Mi distribución de trabajo sigue siendo [ArchLinux][3] con Gnome como escritorio, esto es importante para las capturas de pantalla, LibreOffice es cada vez más personalizable así que las mismas pueden variar dependiendo de tu sistema operativo (SO), distribución o escritorio que uses y de la personalización que tengas en tu equipo. Más adelante puedes ver algunas recomendaciones generales para trabajar.
Mi distribución de trabajo sigue siendo [ArchLinux][3] con Gnome como escritorio. Esto solo es relevante para las capturas de pantalla. LibreOffice es cada vez más personalizable, así que aquellas pueden variar dependiendo del sistema operativo (SO), distribución o escritorio que uses y de la personalización que tengas en tu equipo. Más adelante puedes ver algunas recomendaciones generales para trabajar.
Este libro esta en constante ampliación, el [repositorio del proyecto][4] debe ser siempre tu referencia para tener la última versión. Recuerda, si te parece que lo mereces, habla de el, y si no, no seas chismoso. :)
Este libro está en constante ampliación. El [repositorio del proyecto][4] debe ser siempre tu referencia para tener la última versión. Recuerda, si te parece que lo merece, habla de él, y si no, no seas chismoso. :)
Los lugares donde puedes encontrarme para cualquier comentario o duda de este libro son:
Los lugares donde puedes encontrarme para cualquier comentario o duda sobre este libro son:
* El [grupo oficial de Telegram][5]
* El [foro oficial][6]
* En [Mastodon][7]
**Importante, nunca respondo preguntas en privado** a menos que quieras contratar mis servicios, la duda que tengas, es bastante probable que otros la tengan, así que la pregunta y su respectiva respuesta deben ser públicas para que todos se beneficien.
**Importante, nunca respondo preguntas en privado** a menos que quieras contratar mis servicios. La duda que tengas, es bastante probable que otros la tengan, así que la pregunta y su respectiva respuesta deben ser públicas para que todos se beneficien.
La tecnología avanza cada día, mencionarlo puede ser obvio, pero aún no llega, al usuario común, o sea, nosotros, la tecnología que nos escriba nuestros programas por si sola, mientras llega, no queda otro camino que estudiar y practicar.
La tecnología avanza cada día. Mencionarlo puede ser obvio, pero aún no llega al usuario común, o sea, a nosotros, la tecnología que nos escriba nuestros programas por sí sola. Mientras llega, no queda otro camino que estudiar y practicar.
Desarrollar macros, es una tarea abstracta pero divertida, no hay atajos para llegar a dominar el tema, solo la practica, únicamente la practica.
Desarrollar macros es una tarea abstracta pero divertida; no hay atajos para llegar a dominar el tema, solo la practica, únicamente la práctica.
Cada ejemplo mostrado en este libro ha sido probado al menos dos veces, asegurate de copiarlo correctamente, si, puedes copiar.
Cada ejemplo mostrado en este libro ha sido probado al menos dos veces. Asegúrate de copiarlo correctamente: sí, puedes copiar.
> Dedico este trabajo a las personas que me aman, sin su amor, no sería lo que soy.
> Dedico este trabajo a las personas que me aman; sin su amor, no sería lo que soy.

View File

@ -1,69 +1,67 @@
# 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.
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 ordenarle 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, 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.
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.
## ¿Donde se guardan las macros?
## ¿Dónde 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.
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. Lo que resulta está indicado en el siguiente diagrama, por cierto, hecho en Draw.
![Donde se guardan las macros](img/001_macros.png)
![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 un documento (codigo_libro.ods) con una biblioteca (mi_biblioteca), un modulo (mi_modulo) y dos macros.
En la siguiente imagen puedes ver cómo se almacen y organizan, dentro de un documento (codigo_libro.ods), una biblioteca (mi_biblioteca), un módulo (mi_modulo) y dos macros.
![Organizar macros](img/002_macros.png)
![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 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 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 también pueden guardarse en el perfil del usuario, con lo que estarán disponibles solo para este usuario.
Las macros 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**.
![Mis macros](img/003_macros.png)
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.
También las macros se pueden guardar dentro del directorio del programa 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](img/004_macros.png)
## 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.
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.
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.
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 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...**
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**.
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.
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.
![Nivel de seguridad medio](img/006_macros.png)
**IMPORTANTE**: Siempre verifica la fuente de tus macros, ante la duda, es mejor que las desactives.
||| **IMPORTANTE**: Siempre verifica la fuente de tus macros. Ante la duda, es mejor que las desactives.
## Mi primer macro
## Mi primera 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.
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ú 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**.
Ve al menú **Herramientras > 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)
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**.
La acción anterior te permitirá establecer el nuevo nombre para un nuevo módulo. Escribe el nombre que quieras y da clic en el botón **Aceptar**.
![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](img/009_macros.png)
![Nuevo módulo en EDI](img/009_macros.png)
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.
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.
```vbnet
Sub Main
@ -79,23 +77,22 @@ Sub mi_primero_macro()
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**.
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 primer macro](img/010_macros.png)
![Mi primera macro](img/010_macros.png)
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:
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 "por qué",
> el hombre practico sabe el "cómo",
> lo ideal es saber "cómo" y "por qué"...
> 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é"
Para entender el **¿por qué?**, analizaremos cada linea de nuestra primer macro en el siguiente tema.
Para entender el *¿por qué?*, analizaremos cada línea de nuestra primera macro en el siguiente tema.
## Analizando nuestra primer macro
## Analizando nuestra primera macro
Toda macro tiene la estructura:
@ -107,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 **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:
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:
```vbnet
Sub sub()
@ -117,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:
@ -125,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", "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?...
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 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?...
```vbnet
MsgBox 1234567890