Difference between revisions of "ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro"

From Apache OpenOffice Wiki
< ES‎ | Manuales‎ | GuiaAOO‎ | TemasAvanzados‎ | Macros‎ | StarBasic
Jump to: navigation, search
m
Line 259: Line 259:
 
  ' comentario
 
  ' comentario
 
  Dim intNum As Integer
 
  Dim intNum As Integer
     intNum <nowiki>=</nowiki> 10 + 10
+
     intNum = 10 + 10
 
     MsgBox "Prueba"    ' comentario
 
     MsgBox "Prueba"    ' comentario
 
  End Sub
 
  End Sub

Revision as of 06:37, 23 August 2013

Template:Documentation/Note

Mi primera macro

Abre el documento que creamos en el capítulo anterior llamado Ejemplos de macros.ods.

De forma predeterminada, cuando se abre un documento de Apache OpenOffice que contiene macros, y en función del nivel de seguridad establecido en las opciones de la suite, se puede mostrar el siguiente aviso de seguridad:


ES.StarBasic.MiPrimeraMacro009.png


Para poder trabajar con macros hay que configurar el nivel de seguridad para que se habilite el uso de macros; más adelante veremos cómo evitar este mensaje al abrir documentos que sabemos son seguros.

Puede que no se muestre este mensaje y se abra el documento directamente con las macros deshabilitadas; si es tu caso, es muy aconsejable cambiar el nivel de seguridad como se muestra en Seguridad en macros.


Editar una macro

Activa la opción Herramientas | Macros | Organizar macros | OpenOffice.org Basic... y navega hasta tu documento, tu biblioteca y tu modulo.

Selecciona la macro que lleva por nombre Mi_Primer_Macro y haz clic sobre el botón Editar. Éste será el procedimiento para editar cualquier macro, por lo que, de aquí en adelante, se dará por hecho que ya lo dominas.


ES.StarBasic.MiPrimeraMacro008.png


Con la acción anterior, se mostrará el Entorno de desarrollo (de aquí en adelante IDE) que nos permitirá escribir código, es decir, crear el programa que haga lo que queramos, cuando queramos y como queramos.

Empezaremos con un clásico de la programación, el “Hola Mundo”. Crearemos el código necesario para que se presente una ventana con un mensaje y un botón.


ES.StarBasic.MiPrimeraMacro007.png


Para lograrlo, agregamos la siguiente linea a la macro. Asegúrate de escribirla o copiarla tal como se muestra aquí escrita. Ten en cuenta que en programación, cada espacio, cada punto, cada coma, es muy importante:


 MsgBox "¡¡Hola Mundo!!"


De modo que en el IDE se muestra de la siguiente manera:


ES.StarBasic.MiPrimeraMacro006.png


Documentation caution.png Guarda los cambios efectuados.


Ejecutar una macro

Para ejecutar la macro, es decir, que realice su trabajo, haz clic sobre el botón Ejecutar programa Basic ES.StarBasic.MiPrimeraMacro001.png, o bien, pulsa la tecla  F5 .

Se presentará el cuadro de mensaje que mostramos lineas arriba.

Ya hemos visto el cómo. Para entender el por qué, analicemos la linea que acabamos de agregarle a nuestra macro:


 MsgBox "¡¡Hola Mundo!!"


La primer palabra (MsgBox), es una instrucción de OOo Basic, es decir, una palabra especial, que el lenguaje reconoce de modo diferente y que realiza, hace, ejecuta una tarea especifica.

Template:Documentation/Note


Esta palabra clave o reservada muestra un mensaje en un cuadro de dialogo.

¿Qué mensaje? El mensaje que muestra es el que indicamos justo tras la palabra clave.

Éste mensaje es lo que en programación se denomina “una cadena" de texto. Las cadenas de texto se escriben en el código encerradas entre comillas dobles y separadas de la instrucción por un espacio.

¿Sucederá lo mismo con números? ¿y con fechas o algún otro valor?

Modifica el código y prueba con las siguientes opciones:


 MsgBox 12345
 MsgBox 15/01/2012
 MsgBox "15/01/2012"
 MsgBox 1dfgdfh245


Insertar comentarios en una macro

Observa la primera línea que se presenta al principio del módulo que hemos creado:


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


La primer palabra también es una palabra clave de OOo Basic que le dice al programa (nuestra macro), que todo lo escrito después de esta palabra es un comentario, y será ignorado por el intérprete de comandos.

Template:Documentation/Note

Comentar las lineas de código es una practica sumamente útil, sobre todo, cuando las macros van creciendo en tamaño y complejidad.

Es muy recomendable, casi una regla, comentar las lineas de código. Un código bien escrito y profesional debe estar comentado.

Así que agregaremos un comentario a nuestra macro:


 REM Muestra un mensaje en un cuadro de dialogo
 MsgBox "¡¡Hola Mundo!!"


Los comentarios, también puedes establecerlos con una una comilla simple ' (cuidado, no confundir con el acento. En el teclado español, se encuentra en la tecla con el signo ?)


 ' Muestra un mensaje en un cuadro de dialogo
 MsgBox "¡¡Hola Mundo!!"


Los comentarios pueden insertarse al final de la linea de código:


 MsgBox "¡¡Hola Mundo!!" REM Muestra un mensaje...dialogo
 MsgBox "¡¡Hola Mundo!!" ' Muestra un mensaje... de dialogo


Es muy importante comentar el 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.


Declarar la macro, procedimiento o subrutina

Observa la línea donde se inicia la macro:


 Sub Mi_Primer_Macro()


La primer palabra es otra palabra clave de OOo Basic, la cual nos sirve para declarar el nombre de una subrutina, como también se denomina a las macros.

Template:Documentation/Note

En lenguaje de programación, decir macro, procedimiento o subrutina es equivalente.

Aunque no es obligatorio, es aconsejable agregar un juego de paréntesis () tras el nombre de la subrutina.


Reglas del nombre de una subrutina

Para identificar la macro es obligatorio asignarle un nombre; en nuestro caso fue Mi_Primer_Macro.

Las subrutinas (macros) deben seguir unas reglas de forma obligatoria a la hora de declarar su nombre.

Si estas reglas se incumplen, se producirá un error de ejecución, y el IDE mostrará un mensaje advirtiendo de tal hecho.

Template:Documentation/Note

Las reglas son las siguientes:

  • El nombre NO puede incluir espacios; en caso contrario, se mostrará el siguiente mensaje de error:
ES.StarBasic.MiPrimeraMacro003.png
  • El nombre NO puede empezar con un número; en caso contrario, se mostrará el siguiente mensaje de error:
ES.StarBasic.MiPrimeraMacro002.png
  • El nombre debe de ser único. NO pueden existir dos o más subrutinas con el mismo nombre dentro del modulo en que se declara. En caso contrario se mostrará el siguiente mensaje de error:
ES.StarBasic.MiPrimeraMacro005.png


Observa que en los dos últimos casos el mensaje de error identifica un Error de sintaxis de BASIC.

La sintaxis en programación se puede definir como el Conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programación.

En este caso, el IDE nos informa de que hemos escrito código que incumple la sintaxis del lenguaje de programación.

Template:Documentation/Note


Declarar el final de la macro, procedimiento o subrutina

Analicemos la ultima y muy sencilla linea de nuestra macro:

 End Sub


Está formada por dos palabras claves del lenguaje. Indican el final de nuestro procedimiento, subrutina o macro.


Sentencias

Cada línea de código es reconocido por el lenguaje como una sentencia.

Template:Documentation/Note


Veamos esta macro con dos sentencias:

 Sub VariasSentencias()
     MsgBox "Esta es una sentencia"
     MsgBox "Esta es otra sentencia"
 End Sub


OOo Basic admite varias sentencias en una sola línea, separadas por dos puntos, como vemos en el siguiente ejemplo:


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


En sentencias largas, puedes usar el carácter de continuación de línea, (guión bajo _ ), como se muestra en el siguiente ejemplo:


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


Aunque la sentencia se escribe utilizando varias líneas, sigue siendo una única sentencia


Colores utilizados en el IDE para el código

El IDE nos muestra las palabras y números que conforman el código utilizando diferentes colores. El uso distintivo de colores en el código es muy útil cuando se esta programando.

El IDE utiliza los siguientes colores en el código:

  • Azul para las palabras claves
  • Gris para los comentarios
  • Rojo para los números
  • Rojo para las cadenas de texto
  • Verde para todo lo demás

Aquí un ejemplo de como se mostraría el código con esta combinación de colores [1]:


 Option Explicit    Rem Pruebas de comentario
 Sub Pruebas(ByVal Pal As String)
 ' comentario
 Dim intNum As Integer
     intNum = 10 + 10
     MsgBox "Prueba"    ' comentario
 End Sub


Puedes personalizar la configuración de colores utilizados en el código desde la opción Herramientas | Opciones... | OpenOffice.org | Apariencia.


ES.StarBasic.MiPrimeraMacro004.png


Uso de mayúsculas o minúsculas en el código

Para OOo Basic es indistinto el uso de MAYUSCULAS o minúsculas, o cualquier combinación de ambas al escribir las palabras reservadas del lenguaje, así como los nombres definidos en las declaraciones de subrutinas, funciones, constantes o variables.

Nuestra macro, funcionará exactamente igual si estos elementos se escriben en:

  • Minúsculas


 sub mi_primer_macro()
     msgbox "¡¡Hola Mundo!!"
 end sub


  • Mayúsculas


 SUB MI_PRIMER_MACRO()
     MSGBOX "¡¡Hola Mundo!!"
 END SUB


  • O cualquier combinación de ambas. Es la forma mas común y la que se utilizará a lo largo de éstas páginas.


 Sub Mi_Primer_Macro()
     MsgBox "¡¡Hola Mundo!!"
 End Sub


A diferencia de otros entornos IDE de programación, el IDE de OOo Basic no realiza una corrección automática de las palabras sustituyendo los nombres de las subrutinas, funciones, constantes y variables escritas en el código a la forma en que se escribieron en su declaración.


Mejorar el aspecto del código escrito

La extensión Basic IDE Tools permite, entre otras cosas, mejorar el aspecto del código escrito, identificando el formato en que se han declarado las subrutinas, funciones, constantes y variables, y reemplaza automáticamente en el código por el formato utilizado en su declaración. También puede realizar una indentación automática del código.

Por ejemplo:


 sub Documento_Cierra( oDoc, optional bSoloSinCambios as boolean )
 ' Cierra un documento
 If ismissing( bSolosincambios ) then BSOLOSINCAMBIOS = false
 if bsoloSinCambios Then
 IF ODOC.ISMODIFIED() THEN EXIT SUB
 end if
 odoc.dispose()
 end sub


Puede ser automáticamente formateada así:


 Sub Documento_Cierra( oDoc, Optional bSoloSinCambios As Boolean )
 ' Cierra un documento
     If IsMissing( bSoloSinCambios ) Then bSoloSinCambios = False
     If bSoloSinCambios Then
         If oDoc.isModified() Then Exit Sub
     End If
     oDoc.dispose()
 End Sub



  1. Los colores mostrados en esta wiki no tienen por qué coincidir con los colores mostrados en el IDE de Apache OpenOffice, dado que se utilizan sistemas diferentes para colorear las palabras clave, comentarios, etc.



ES.Plantillas.Logo foro es.png
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO,
o quieres ampliar la información, no dudes en dirigirte al

Foro Oficial en español de Apache OpenOffice para Macros y API UNO

Personal tools