manual macros basic-python

747
PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Mon, 20 May 2013 01:46:25 UTC Manual Macros /Basic /Python Apache OpenOffice

Upload: ivan-avila

Post on 18-Jan-2016

291 views

Category:

Documents


9 download

DESCRIPTION

Manual Macros Basic-Python

TRANSCRIPT

  • PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information.PDF generated at: Mon, 20 May 2013 01:46:25 UTC

    Manual Macros /Basic/Python

    Apache OpenOffice

  • ContentsArticles

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic 1ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Introduccion 2ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 3ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 10ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic 18ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/LlamarMacro 19ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables22ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones29ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Constantes 34ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bifurcaciones 35ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 39ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Matrices 48ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/TiposPersonalizados61ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/AmbitoVariables64ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/FuncionesSubrutinas70ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Operadores 83ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/ControlErrores 98ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/ValidacionDatos107ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/ElIDE 115ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConOOo 128ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConOOo/MisMacros 129ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConOOo/AsignandoMacros133ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConOOo/CreandoNuestroPrimerServicio139ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConOOo/TrabajandoConDocumentos153ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc 170ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/TrabajandoConHojas171ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/ReferenciaARangos191ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/ManipulandoRangos223ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/ManipulandoDatos237ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/DandoFormato 261ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/DandoFormato/FormatoDeCeldas262ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/DandoFormato/FormatoFilasColumnas274ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/DandoFormato/EstilosAutoformato278ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/DandoFormato/FormatoPagina288

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/DandoFormato/FormatoCondicional306ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/Imprimiendo 313ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/RangosDeDatos 323ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/BasesDeDatos 368ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/GraficandoDatos389ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/TrabajandoConElementosGraficos417ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/FuncionesPersonalizadas454ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/ConfiguracionGlobalCalc461ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConFormularios 468ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCuadrosDialogo 517ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConEventos 543ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ProyectoPasoAPaso 576ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices 634ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/SeguridadMacros 635ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/ErroresComunes 636ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/InstalarSDK 643ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/MostrarInfoObjetoCalc 645ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/FormulasCalcEspanolIngles646ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/ListaFuentesCalc 656ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Apendices/ListaFormatosCalc 659ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Bibliografia 661ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python 662ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/Introduccion 663ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/MiPrimeraMacro 666ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/ConceptosIniciales 669ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/IntroduccionPython 676ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/PythonAOO 696ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/PythonCalc 723ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/PythonCalc/TrabajandoConHojas 724ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/PythonCalc/ReferenciaARangos 731ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/Apendices 735

    ReferencesArticle Sources and Contributors 736Image Sources, Licenses and Contributors 738

    Article LicensesLicense 744

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic 1

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic

    Esta pgina est en estado borrador. Introduccin Conceptos iniciales Mi primera macro El lenguaje OOo Basic Trabajando con OpenOffice.org Trabajando con Calc Trabajando con formularios Trabajando con cuadros de dialogo Trabajando con eventos Un proyecto paso a paso Apndices Bibliografa

    Para seguir la presente gua puedes utilizar los documentos de ejemplo que ha creado el autor descargando estearchivo [1].

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    References[1] http:/ / wiki. openoffice. org/ wiki/ File:ES_StarBasic_Ejemplos. zip[2] http:/ / forum. openoffice. org/ es/ forum/ viewforum. php?f=50

    http://wiki.openoffice.org/w/index.php?title=File:Editing.pnghttp://wiki.openoffice.org/wiki/File:ES_StarBasic_Ejemplos.ziphttp://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/wiki/File:ES_StarBasic_Ejemplos.ziphttp://forum.openoffice.org/es/forum/viewforum.php?f=50
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Introduccion 2

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/IntroduccionPara escribir este manual y los ejemplos de programacin se ha utilizado OpenOffice.org versin 3.2.1, descargadadesde http:/ / openoffice. org/ es/ descargar [1]. Salvo error u omisin, todo lo indicado en este manual esperfectamente vlido para las nuevas versiones, incluidas la Apache OpenOffice 3.4.1.Algunas distribuciones GNU/Linux compilan sus propias versiones; casi todas deberan de trabajar de formasatisfactoria, pero se recomienda bajar e instalar los paquetes de instalacin desde la pgina web oficial. No segarantiza que los ejemplos mostrados aqu funcionen con otras versiones, de hecho no se garantiza que funcionencon ninguna; es tan alta la cantidad de equipos, sistemas y configuraciones diferentes, que es cuestin software esdifcil garantizar algo y para muestra, podemos leer alguna de las muchas licencias de software que hay en elmercado, incluyendo por supuesto, las de software libre. Lo que si se puede asegurar, es que cada uno de losejemplos que se muestran han sido probado ms de una vez antes de darlos por buenos, as que en general no deberahaber problemas con ellos.A lo largo del manual se utilizarn indistintamente estas expresiones, equivalentes entre ellas:

    AOO Apache OpenOffice

    OOo OpenOffice.org

    StarBasic OOo Basic

    Las imgenes mostradas pueden variar en funcin del sistema operativo (S.O.) en el que se ejecute ApacheOpenOffice, o en las distintas versiones de OOo/AOO utilizadas.Este documento se basa en el libro Aprendiendo OOo Basic de Mauricio Baeza Servn; ste documento est enconstante crecimiento y actualizacin, pudindose obtener la ultima versin disponible en http:/ / www.universolibre. org [2].A lo largo del manual se utilizar el plural mayesttico o el tuteo, siguiendo las recomendaciones de la Gua deestilos de esta wiki [3] y de la Wikipedia [4].Para comentarios, notificacin de errores, sugerencias, colaboraciones y dudas se puede recurrir a los siguientesrecursos y preferiblemente en este orden: Presionar la tecla F1 para buscar en la Ayuda de OOo Basic; antes de escribir para dudas, revisa que:

    No esta resuelta en estas notas No esta resuelta en la ayuda No se ha comentado en las listas de correo o foros Realizar una consulta en tu buscador favorito Y lo ms importante, trata antes de resolverlo por ti mismo

    Buscar las dudas en foros; tal vez otros usuarios han tenido el mismo problema, y encuentres una solucinsatisfactoria. El foro oficial de Apache OpenOffice en Espaol es Foro Oficial de AOO en Espaol [5]

    Plantear las dudas en foros; de esta forma, si se publica una posible respuesta servir tambin a otros usuarios. Esnecesario ser lo ms claro posible en la exposicin del problema o duda, y facilitar todos los datos disponibles,sobre todo, la versin de Apache OpenOffice empleada y el sistema operativo en que se est ejecutando. Elsubforo de macros para Apache OpenOffice en espaol es Subforo Oficial de Macros de AOO en Espaol [2]

    Plantear las dudas en las listas de correo disponibles. Para saber cmo suscribirse a la lista de correo en espaolconsulte este enlace: Listas de correo de Apache OpenOffice: Lista en espaol.

    Estas notas son posibles gracias a la generosidad de la gran comunidad de OpenOffice.org / Apache OpenOffice entodo el mundo y por supuesto a la comunidad mundial del software libre, es decir, a las personas que todos los dasdesarrollan, usan y difunden el software libre.

    http://openoffice.org/es/descargarhttp://openoffice.org/es/descargarhttp://www.universolibre.orghttp://www.universolibre.orghttp://www.universolibre.org/node/8http://wiki.openoffice.org/wiki/ES/AyudaWiki/GuiaEstiloshttp://es.wikipedia.org/wiki/Wikipedia:T_o_usted?http://forum.openoffice.org/es/forumhttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/w/index.php?title=ES/Participar/ListasCorreo%23Lista_en_espa.C3.B1ol
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/Introduccion 3

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    References[1] http:/ / openoffice. org/ es/ descargar[2] http:/ / www. universolibre. org/ node/ 8[3] http:/ / wiki. openoffice. org/ wiki/ ES/ AyudaWiki/ GuiaEstilos[4] http:/ / es. wikipedia. org/ wiki/ Wikipedia:T_o_usted?[5] http:/ / forum. openoffice. org/ es/ forum

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales

    Dnde se guardan las macrosLos lenguajes de programacin nos permiten hacer que el ordenador realice por nosotros esas tareas complejas,repetitivas y tediosas (tambin las divertidas). Trataremos de aprender como hacer en Apache OpenOffice esas tareascomplejas, repetitivas y tediosas con uno de los cuatro lenguajes de programacin de macros de que dispone: el OOoBasic.Las instrucciones que usamos para decirle al programa qu hacer, cmo, cundo, el orden y la secuencia en quequeremos que lo haga, las llamaremos MACROS.Las macros pueden crearse de forma asistida utilizando la Grabadora de macros (por ahora slo presente en Writery Calc) o escribirlas nosotros desde cero (en cuyo caso, podemos crearlas tambin desde Draw, Impress y Base).Por desgracia, la grabadora no es capaz de cubrir todas las necesidades de los usuarios, ni tampoco de capturar todoslos actos que se realizan en la aplicacin. Por ello, en este manual crearemos nuestras macros partiendo desde cero.Las macros grabadas con la grabadora o escritas por nosotros se guardan en mdulos. stos se guardan y organizanen bibliotecas, que estarn contenidas en alguno de estos tres contenedores: Macros de OpenOffice.org Mis Macros El propio documento.Por el momento, si consideramos solamente el contenedor documento, podemos representarlo como se muestra en elsiguiente diagrama:

    http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://openoffice.org/es/descargarhttp://www.universolibre.org/node/8http://wiki.openoffice.org/wiki/ES/AyudaWiki/GuiaEstiloshttp://es.wikipedia.org/wiki/Wikipedia:T_o_usted?http://forum.openoffice.org/es/forum
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 4

    Todos los documentos integran por defecto una biblioteca llamada Standard. Esta biblioteca puede contener uno oms mdulos, y no puede ser eliminada.Los mdulos adems de contener macros, pueden contener funciones, como veremos ms adelante. Las librerastambin pueden contener dilogos.En la siguiente imagen se muestra un documento (1) que contiene dos bibliotecas. Una de ellas (2) contiene unmodulo (3), que contiene dos macros (4).

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.008.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.001.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 5

    Vamos a realizar un pequeo ejercicio: crearemos un documento con la estructura que hemos visto en la imagen, yque nos servir para guardar las macros que vayamos creando.

    Crear una biblioteca, un mdulo y una macro en un contenedor tipodocumentoComo hemos visto, las macros se almacenan en mdulos que a la vez se almacenan en bibliotecas. Por lo tanto, paracrear una macro deberemos hacerlo en un mdulo existente, en una biblioteca existente. Si nuestro documento no lastiene, deberemos crearlas previamente. El proceso es el siguiente: Crea un nuevo documento en Calc (o cualquier otra aplicacin de Apache OpenOffice) y gurdalo en el lugar y

    con el nombre que consideres ms oportuno; en nuestro ejemplo, lo guardaremos con el nombre Ejemplos demacros.ods.

    Activa la opcin del men Herramientas | Macros | Organizar macros | OpenOffice.org Basic...Se mostrar el siguiente cuadro de dialogo

    Clic sobre el botn de comando Administrar...Se muestra el siguiente cuadro de dialogo. Haz clic en la ficha Bibliotecas; desde el cuadro de lista desplegableUbicacin, selecciona el documento al que le aadiremos la nueva biblioteca (en nuestro caso, el documento de CalcEjemplos de macros.ods).

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.009.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 6

    Clic sobre el botn de comando Nuevo.Se mostrar el cuadro de dialogo Nueva biblioteca, solicitando el nombre de la nueva biblioteca, la cual llamaremosmiBiblioteca.

    Escribe el nombre y haz clic en Aceptar.La nueva biblioteca se agrega a la lista. Haz clic sobre la ficha MdulosVers que a la nueva biblioteca automticamente se le aadi un nuevo mdulo llamado Module1.Si no se muestra, tal vez tengas que hacer clic sobre el botn Expandir representado por un signo de suma (+) justodelante del nombre del documento. Haz clic sobre el botn de comando Cerrar para regresar al anterior cuadro de dialogo.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.007.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.006.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 7

    Haciendo sucesivamente clic sobre los botones Expandir (+) podrs desplegar los elementos de nuestro documento.En la lista de macros situada a la derecha aparece ya una macro con el nombre Main (elipse roja). Siempre que secrea un nuevo modulo en ste se crea tambin una macro vaca de nombre Main, nombre que te resultar familiar sialguna vez programaste en C.Estos nombres vienen predeterminados, pero se pueden cambiar, como haremos a continuacin. Clic en el botn de comando Editar.

    Se mostrar una nueva ventana, que ser el centro de trabajo de "todo" lo que hagamos en OOo Basic; esta nuevaventana, de hecho, es una nueva aplicacin que nos permitir escribir todas las macros que nos permita nuestro

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.005.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.004.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 8

    tiempo e imaginacin.Esta aplicacin recibe el nombre de IDE (Entorno de Desarrollo Integrado) y es muy importante que te familiaricescon l.La barra de ttulo de la aplicacin nos muestra el nombre del documento que estamos editando, as como el nombrede la biblioteca en la que estamos trabajando (1).En la zona inferior, unas pequeas fichas nos muestran el nombre del modulo que estamos editando (2) y si fuera elcaso, otros mdulos y dilogos de la biblioteca.En el rea de edicin vers la macro mencionada anteriormente, Main (3)

    Cambiar el nombre de un mduloPodemos cambiar el nombre de un mdulo haciendo clic con el botn secundario[1] sobre la ficha que muestra elnombre actual (2). Del men contextual mostrado selecciona Cambiar nombre; en la misma ficha vers el cursor deescritura[2] se posicionar al final del nombre actual del modulo. Ahora puedes cambiarlo por el que quieras.Para nuestro ejercicio lo llamaremos miModulo.Para terminar la edicin presiona la tecla Intro o simplemente haz clic en otra parte, como por ejemplo, el rea deedicin (3).

    El rea de edicin es como un editor de textos, pero que dispone de muchas caractersticas especiales que iremosconociendo poco a poco.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.003.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ConceptosIniciales 9

    Cambiar el nombre de una macroSelecciona o haz doble clic sobre la palabra Main para seleccionar la palabra completa.Puedes reemplazar este nombre por el que quieras (siempre que siga las reglas de nombres de macros que veremosms adelante).Para continuar con nuestro ejercicio cambiaremos el nombre por Mi_Primer_Macro.

    Guardar los cambios realizadosPor ltimo, guardaremos los cambios realizados. Para ello, disponemos de varias opciones: Opcin Archivo | Guardar Haz clic sobre el botn Guardar en la barra de herramientas Presiona la combinacin de teclas Ctrl+G

    El dilogo Organizar macrosDesde la opcin Herramientas | Macros | Organizar macros | OpenOffice.org Basic... comprueba que el resultadode tu ejercicio es similar al mostrado en la imagen siguiente:

    [1][1] Por lo general, en un ratn configurado para diestros el botn secundario es el derecho; en un ratn configurado para zurdos, el izquierdo.[2][2] Lnea vertical parpadeante que indica la posicin donde se agregar el texto que escribas

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO (http:/ / forum. openoffice. org/ es/ forum/ viewforum. php?f=50)

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ConceptosIniciales.002.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 10

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro

    Para entender este captulo es necesario leer el captulo anterior Conceptos iniciales

    Mi primera macroAbre el documento que creamos en el captulo anterior llamado Ejemplos de macros.ods.De forma predeterminada, cuando se abre un documento de Apache OpenOffice que contiene macros, y en funcindel nivel de seguridad establecido en las opciones de la suite, se puede mostrar el siguiente aviso de seguridad:

    Para poder trabajar con macros hay que configurar el nivel de seguridad para que se habilite el uso de macros; msadelante veremos cmo 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 tucaso, es muy aconsejable cambiar el nivel de seguridad como se muestra en Seguridad en macros.

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro009.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 11

    Editar una macroActiva la opcin Herramientas | Macros | Organizar macros | OpenOffice.org Basic... y navega hasta tudocumento, tu biblioteca y tu modulo.Selecciona la macro que lleva por nombre Mi_Primer_Macro y haz clic sobre el botn Editar. ste ser elprocedimiento para editar cualquier macro, por lo que, de aqu en adelante, se dar por hecho que ya lo dominas.

    Con la accin anterior, se mostrar el Entorno de desarrollo (de aqu en adelante IDE) que nos permitir escribircdigo, es decir, crear el programa que haga lo que queramos, cuando queramos y como queramos.Empezaremos con un clsico de la programacin, el Hola Mundo. Crearemos el cdigo necesario para que sepresente una ventana con un mensaje y un botn.

    Para lograrlo, agregamos la siguiente linea a la macro. Asegrate de escribirla o copiarla tal como se muestra aquescrita. Ten en cuenta que en programacin, cada espacio, cada punto, cada coma, es muy importante:

    MsgBox "Hola Mundo!!"

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

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro008.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro007.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 12

    Guarda los cambios efectuados.

    Ejecutar una macro

    Para ejecutar la macro, es decir, que realice su trabajo, haz clic sobre el botn Ejecutar programa Basic , o bien,pulsa la tecla F5.Se presentar el cuadro de mensaje que mostramos lineas arriba.Ya hemos visto el cmo. Para entender el por qu, analicemos la linea que acabamos de agregarle a nuestra macro:

    MsgBox "Hola Mundo!!"

    La primer palabra (MsgBox), es una instruccin de OOo Basic, es decir, una palabra especial, que el lenguajereconoce de modo diferente y que realiza, hace, ejecuta una tarea especifica.

    Instruccin: Palabra clave reservada por el lenguaje de programacin que se reconoce de modo diferente, y ejecuta una tarea especfica

    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 programacin se denomina una cadena" de texto. Las cadenas de texto se escriben en elcdigo encerradas entre comillas dobles y separadas de la instruccin por un espacio.Suceder lo mismo con nmeros? y con fechas o algn otro valor?Modifica el cdigo y prueba con las siguientes opciones:

    MsgBox 12345

    MsgBox 15/01/2012

    MsgBox "15/01/2012"

    MsgBox 1dfgdfh245

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro006.pnghttp://wiki.openoffice.org/w/index.php?title=File:Documentation_caution.pnghttp://wiki.openoffice.org/w/index.php?title=File:ES.StarBasic.MiPrimeraMacro001.pnghttp://wiki.openoffice.org/w/index.php?title=File:Documentation_note.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 13

    Insertar comentarios en una macroObserva la primera lnea que se presenta al principio del mdulo que hemos creado:

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

    La primer palabra tambin es una palabra clave de OOo Basic que le dice al programa (nuestra macro), que todo loescrito despus de esta palabra es un comentario, y ser ignorado por el intrprete de comandos.

    Comentario: Texto explicativo que es ignorado por el intrprete de comandos del lenguaje de programacin

    Comentar las lineas de cdigo es una practica sumamente til, sobre todo, cuando las macros van creciendo entamao y complejidad.Es muy recomendable, casi una regla, comentar las lineas de cdigo. Un cdigo bien escrito y profesional debe estarcomentado.As que agregaremos un comentario a nuestra macro:

    REM Muestra un mensaje en un cuadro de dialogo

    MsgBox "Hola Mundo!!"

    Los comentarios, tambin puedes establecerlos con una una comilla simple ' (cuidado, no confundir con el acento.En el teclado espaol, 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 cdigo:

    MsgBox "Hola Mundo!!" REM Muestra un mensaje...dialogo

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

    Es muy importante comentar el cdigo; tu memoria te lo agradecer, as como todos los programadores con los quecompartas tu cdigo, si decides que sea software libre, como te recomiendo que sea.

    Declarar la macro, procedimiento o subrutinaObserva la lnea 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 tambin se denomina a las macros.

    Declarar: Asignar un nombre a una subrutina

    Declaracin: La lnea de cdigo en la que se asigna nombre a una subrutina.

    En lenguaje de programacin, decir macro, procedimiento o subrutina es equivalente.Aunque no es obligatorio, es aconsejable agregar un juego de parntesis () tras el nombre de la subrutina.

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.pnghttp://wiki.openoffice.org/w/index.php?title=File:Documentation_note.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 14

    Reglas del nombre de una subrutinaPara 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 ejecucin, y el IDE mostrar un mensaje advirtiendo de talhecho.

    Error de ejecucin: Error detectado por el IDE en el cdigo de un programa, que provoca que se detenga la ejecucin del programa y sepresente un mensaje de advertencia

    Las reglas son las siguientes: El nombre NO puede incluir espacios; en caso contrario, se mostrar el siguiente mensaje de error:

    El nombre NO puede empezar con un nmero; en caso contrario, se mostrar el siguiente mensaje de error:

    El nombre debe de ser nico. NO pueden existir dos o ms subrutinas con el mismo nombre dentro del modulo enque se declara. En caso contrario se mostrar el siguiente mensaje de error:

    Observa que en los dos ltimos casos el mensaje de error identifica un Error de sintaxis de BASIC.La sintaxis en programacin se puede definir como el Conjunto de reglas que definen las secuencias correctas delos elementos de un lenguaje de programacin.En este caso, el IDE nos informa de que hemos escrito cdigo que incumple la sintaxis del lenguaje deprogramacin.

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro003.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro002.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro005.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 15

    Error de sintaxis: Error detectado por el IDE en el cdigo de un programa por incumplir las normas de sintaxis del lenguaje, que provocaque se detenga la ejecucin del programa y se presente un mensaje de advertencia

    Declarar el final de la macro, procedimiento o subrutinaAnalicemos 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.

    SentenciasCada lnea de cdigo es reconocido por el lenguaje como una sentencia.

    Sentencia: Conjunto de instrucciones y datos que forman una lnea de cdigo de acuerdo a la sintaxis del lenguaje.

    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 lnea, separadas por dos puntos, como vemos en el siguienteejemplo:

    Sub VariasSentencias()

    MsgBox "Esta es una sentencia" : MsgBox "Esta es otra sentencia"

    End Sub

    En sentencias largas, puedes usar el carcter de continuacin de lnea, (guin bajo _ ), como se muestra en elsiguiente ejemplo:

    Sub LineasLargas()

    MsgBox "Esta es una linea larga de cdigo, se puede dividir " & _

    "usando el guin bajo, como en este ejemplo", 0 ,"Ejemplo " & _

    "de linea larga"

    End Sub

    Aunque la sentencia se escribe utilizando varias lneas, sigue siendo una nica sentencia

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.pnghttp://wiki.openoffice.org/w/index.php?title=File:Documentation_note.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 16

    Colores utilizados en el IDE para el cdigoEl IDE nos muestra las palabras y nmeros que conforman el cdigo utilizando diferentes colores. El uso distintivode colores en el cdigo es muy til cuando se esta programando.El IDE utiliza los siguientes colores en el cdigo:

    Azul para las palabras claves Gris para los comentarios Rojo para los nmeros Rojo para las cadenas de texto Verde para todo lo dems

    Aqu un ejemplo de como se mostrara el cdigo con esta combinacin 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 configuracin de colores utilizados en el cdigo desde la opcin Herramientas | Opciones... |OpenOffice.org | Apariencia.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.MiPrimeraMacro004.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 17

    Uso de maysculas o minsculas en el cdigoPara OOo Basic es indistinto el uso de MAYUSCULAS o minsculas, o cualquier combinacin de ambas al escribirlas 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: Minsculas

    sub mi_primer_macro()

    msgbox "Hola Mundo!!"

    end sub

    Maysculas

    SUB MI_PRIMER_MACRO()

    MSGBOX "Hola Mundo!!"

    END SUB

    O cualquier combinacin de ambas. Es la forma mas comn y la que se utilizar a lo largo de stas pginas.

    Sub Mi_Primer_Macro()

    MsgBox "Hola Mundo!!"

    End Sub

    A diferencia de otros entornos IDE de programacin, el IDE de OOo Basic no realiza una correccin automtica delas palabras sustituyendo los nombres de las subrutinas, funciones, constantes y variables escritas en el cdigo a laforma en que se escribieron en su declaracin.

    Mejorar el aspecto del cdigo escritoLa extensin Basic IDE Tools [2] permite, entre otras cosas, mejorar el aspecto del cdigo escrito, identificando elformato en que se han declarado las subrutinas, funciones, constantes y variables, y reemplaza automticamente en elcdigo por el formato utilizado en su declaracin. Tambin puede realizar una indentacin automtica del cdigo.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 automticamente 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

    http://aoo-extensions.sourceforge.net/en/project/BasicIDETools
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/MiPrimeraMacro 18

    oDoc.dispose()

    End Sub

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

    [2] http:/ / aoo-extensions. sourceforge. net/ en/ project/ BasicIDETools

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO (http:/ / forum. openoffice. org/ es/ forum/ viewforum. php?f=50)

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic

    Esta pgina est en estado borrador.OOo Basic forma parte de la familia de lenguajes Basic y comparte con ellos la mayor parte de su sintaxis, sufacilidad y sencillez.Por su parte, el IDE se encarga de revisar la correcta "sintaxis" (recordando que sintaxis es un conjunto de reglas) decada lnea que nosotros escribamos.Ahora ya conoces donde empieza y donde termina una macro, como nombrarla y como ejecutarla. Repasemos unavez ms esto...La estructura bsica para una macro es.

    Sub Nombre_de_la_Macro()

    REM Aqu van todas las instrucciones que queramos

    End Sub

    Por supuesto que existen ms variantes, si bien por ahora, con sta es ms que suficiente.Veamos ms cosas de este lenguaje, imprescindibles para poder programar macros:

    Llamar a una macro Declarando y usando variables Instrucciones y funciones en OOo Basic Constantes Bifurcaciones Bucles Matrices

    http://aoo-extensions.sourceforge.net/en/project/BasicIDEToolshttp://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/w/index.php?title=File:Editing.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic 19

    Tipos personalizados mbito de variables Funciones y subrutinas Operadores Control de errores Validacin de datos El IDE, mucho ms que un editor

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/LlamarMacroVamos a escribir nuestra segunda macro:

    Sub Mi_Segunda_Macro()

    'Algo ms interesante

    MsgBox "Hola Nena!"

    End Sub

    Y agregamos una tercera.

    Sub MiTercerMacro()

    'Lo que quieras

    MsgBox "OOo Basic es fcil y divertido"

    End Sub

    En el nombre de la tercera no se han usado guiones para separar las palabras. Esta tcnica se denominadanomenclatura de camello, y consiste en escribir las palabras en minscula con la primera letra en mayscula, sinespacios ni separadores de ningn tipo. De ahora en adelante, utilizaremos esta nomenclatura .Si intentamos ejecutar cada una de las macros (por ejemplo, haciendo clic sobre la macro y pulsando F5 ) veremosque el IDE tan slo ejecuta la primera macro del mdulo activo.Por contra, y como excepcin, en algunas distribuciones Linux la macro que se ejecuta al presionar F5 es la macrodonde est situado el cursor de escritura en ese momento; no se puede aplicar como regla general, ya que todava nose ha implementado en la distribucin oficial.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/LlamarMacro 20

    Para seleccionar y ejecutar una macro cualquiera, desde la barra de herramientas haz clic sobre el botn Seleccionar macro.Del cuadro de dialogo mostrado, selecciona la macro deseada y presiona el botn Ejecutar.

    El resultado sera el siguiente

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.010.pnghttp://wiki.openoffice.org/w/index.php?title=File:ES.StarBasic.ElLenguajeOOoBasic.001.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.009.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/LlamarMacro 21

    Repetimos el proceso para la tercera, obteniendo este resultado:

    Disponemos de otra tcnica para ejecutar una o varias macros: consiste en crear una macro que escribimos alprincipio del mdulo y desde sta, llamar a las otras macros. Por ejemplo:

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

    Sub Pruebas

    Mi_Primer_Macro

    End Sub

    Sub Mi_Primer_Macro

    'Todo un clsico

    MsgBox "Hola Mundo!"

    End Sub

    Sub Mi_Segunda_Macro

    'Algo mas interesante

    MsgBox "Hola Nena!"

    End Sub

    Sub MiTercerMacro

    'Lo que quieras

    MsgBox "OOo Basic es fcil y divertido"

    End Sub

    Llamar a una macro desde otra es tan sencillo como escribir el nombre correcto de la macro a la que deseamosllamar...Como dijimos, puedes llamar a una o ms macros:

    Sub Pruebas

    Mi_Primer_Macro

    Mi_Segunda_Macro

    End Sub

    Otra tcnica para llamar a otras macros consiste en utilizar la instruccin Call; el resultado es el mismo:

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.008.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.007.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/LlamarMacro 22

    Sub Pruebas

    Call Mi_Primer_Macro

    Call Mi_Segunda_Macro

    End Sub

    ste ultimo mtodo es preferible al primero, si bien, veremos el porqu ms adelante

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables

    Esta pgina est en estado borrador.

    Del dato a la informacinCuando se programan macros, debemos tener muy presente este sencillo diagrama:

    Si analizas cada programa de ordenador que usas, veras que en mayor o menor medida, cumple el flujo anterior.Cada uno de estos tres pasos se pueden dividir en muchos ms, pero esa divisin tu mismo la irs notando ydesglosando conforme profundices en este o cualquier otro lenguaje, veamos un sencillo ejemplo:

    Solicitamos que el usuario capture su nombre completo (Entrada) Contamos el nmero de letras (o palabras) que contiene (Proceso) Mostramos el resultado obtenido (Visualizacin)

    Pero, qu ocurre si adems del nombre solicitamos que capture su fecha de nacimiento? Tal vez podramos obteneradems del nmero de letras o palabras:

    El da de la semana en que naci Cuantos das lleva vivo Cuantos aos tiene Cuantas vocales contiene el nombre

    http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/w/index.php?title=File:Editing.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.006.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 23

    Se te ocurren otros datos que puedas obtener?Observa como con tan slo dos datos podemos obtener mucha informacin. Esta sencilla ecuacin es la diferenciaentre un programa eficiente y uno que no lo es.Los buenos programas manipulan eficientemente los datos para darnos informacin, y desde el flujo de los datoshasta la informacin, existen dos entes que son determinantes para la calidad de la informacin obtenida:

    uno es la computadora, la que, normalmente, slo provee de velocidad el otro es el programador, que pone toda su inteligencia al servicio del proceso de convertir los datos en

    informacin que permita tomar decisiones.

    De acuerdo a los dos diagramas anteriores, la finalidad de toda macro (o programa), es obtener datos, ya sealeyndolos de algn origen o solicitndolos al usuario.Retomando el sencillo ejemplo con el que empezamos este capitulo, vamos a solicitarle al usuario que nosproporcione su nombre, lo cual lograremos con la funcin InputBox.Una funcin es como un procedimiento, pero a diferencia de ste, la funcin devuelve (retorna) un valor.

    Qu es y para que se utiliza una variableLo ms habitual es que ese valor devuelto se almacene en algn lugar para que est disponible y poder manipularlo.As que en primer lugar tenemos que aprender a almacenar datos, aunque sea de forma temporal, para podermanipularlos. El lugar donde se almacenan es en la memoria del ordenador (la llamada memoria RAM).Para ello tendremos que darle un nombre a una porcin de dicha memoria, a esta porcin que estamos nombrando, lellamaremos variable. Se denomina as precisamente por que su valor o contenido puede variar durante los procesosque realice nuestra macro.Resumiendo, los datos que obtengamos los guardamos temporalmente en variables, siguiendo el esquema de estasencilla ecuacin, que iremos ampliando segn vayamos avanzando en nuestro curso:

    Variable = DatoVeamos un ejemplo de esto:

    Sub MostrarNombre

    'Asignamos un valor a una variable

    'Una de mis novias

    Nombre = "Nicole Kidman"

    'Mostramos el valor de la variable

    MsgBox Nombre

    End Sub

    Observa como en la linea.

    Nombre = "Nicole Kidman"

    Estamos asignando el dato Nicole Kidman, a la variable Nombre.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.005.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 24

    Reglas de los nombres de variablesEl nombre de las variables, sigue las mismas reglas que el nombre de las macros: no pueden llevar espacios no pueden empezar con un nmero no poder incluir caracteres especialesVeamos algunos ejemplos de nombres de variables:

    Direccion Correcto

    Telefono2 Correcto

    FechaDeNacimiento Correcto

    Fecha Nacimiento Incorrecto (tiene un espacio)

    3Fax Incorrecto (comienza por un nmero)

    Direccin Incorrecto (no se permiten caracteres especiales)

    Calle,Numero Incorrecto (no se permiten comas ni puntos)

    Declaracin implcita de variablesSimplemente con usar el nombre correcto de una variable, OOo Basic hace uso de ella. Esta forma de usar variablesse conoce como, declaracin implcita, por que al asignarle un valor por primera vez a una variable, el lenguajereserva el espacio en memoria para su uso.Esta forma de usar las variables no es recomendable, ya que tal y como las macros se hacen ms grandes ycomplejas, la probabilidad de que se produzcan errores en el cdigo aumenta de forma exponencial.

    Declaracin explcita de variablesEn contraste, es ms eficiente y mucho ms claro si desde el inicio de una macro se declaran las variables que seutilizarn. Esta segunda forma de usar las variables se denomina, declaracin explcita. Mediante esta forma dedeclaracin, nosotros somos los que le indicamos al lenguaje qu variables son las que usaremos.Para declarar de manera explcita una variable utilizaremos la palabra clave Dim.Veamos un ejemplo:

    Sub DeclarandoVariables

    'Declaramos cuatro variables

    Dim Direccion

    Dim Telefono2

    Dim FechaNacimiento

    Dim Edad

    'Mas cdigo

    End Sub

    Con la instruccin Dim, estamos diciendo reserva un espacio en la memoria que se llame Direccion para quepueda almacenar y manipular ese dato, y efectivamente, el lenguaje lo har para nosotros.Es conveniente que el nombre de las variables inmediatamente nos d una idea acerca del dato que guardaremos enella.

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 25

    Tipos de variablesAhora pensemos en qu es lo que almacenaremos en cada variable. En el caso de la variable Direccion,normalmente guardar un texto; la variable FechaNacimiento una fecha; la variable Edad un nmero.Tal y como ahora estn declaradas las variables, se puede guardar cualquier tipo de dato (texto, numero, fecha, etc)en ellas, dado que no hemos especificado ms.Si no especificamos el tipo de dato que almacena una variable, sta se crea de tipo variant, y permite almacenarcualquier tipo de dato. Por ejemplo:

    Sub VariablesTipoVariant

    Dim UnDato

    UnDato = "Esto es un texto" 'Guardamos un texto

    MsgBox UnDato

    UnDato = 12345678 'Guardamos un numero

    MsgBox UnDato

    UnDato = "15/01/1974" 'Guardamos una fecha

    MsgBox UnDato

    End Sub

    Al declarar las variables podemos especificar el tipo de dato que van a almacenar. La recomendacin es que, en lugarde utilizar variables tipo Variant, le indiquemos explcitamente al lenguaje qu tipo de datos guardaremos en ella.Para declarar el tipo de dato que almacenar una variable, tras la declaracin de su nombre utilizaremos la palabraclave As, y a continuacin, el tipo de variable. Por ejemplo:

    Sub DeclaracionExplicitaDeVariables

    Dim Direccion As String 'Variable tipo texto

    Dim Edad As Integer 'Variable tipo numero entero

    Dim Fecha As Date 'Variable tipo fecha

    Direccion = "Parque San Toribio N 24"

    Edad = 35

    MsgBox Direccion

    MsgBox Edad

    End Sub

    Un error frecuente en programadores noveles es declarar variables del siguiente modo.

    Dim Nombre, Paterno, Materno As String

    Aparentemente, las tres variables anteriores son de tipo String, pero no es as, solo la variable Materno es de estetipo, Nombre y Paterno sern creadas de tipo Variant.Para que las tres sean de tipo String tienen que declararse del siguiente modo.

    Dim Nombre As String, Paterno As String, Materno As String

    Esta es la lista completa de tipos de variables que puedes usar en OOo Basic:

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 26

    Tipo Descripcin Valores que puede contener

    String Texto Hasta 65,535 caracteres

    Byte Entero Enteros

    entre 0 y 255

    Integer Entero Enteros

    entre -32.768 y 32.767

    Long Entero largo Enteros

    entre -2.147.483.648 y 2.147.483.647

    Single Simples Precisin simple y coma flotante

    negativos entre -3,402823 x 1038 y -1,401298 x 10-45

    positivos entre 1,401298 x 10-45 y 3,402823 x 1038

    Double Dobles Precisin doble y coma flotante

    negativos entre -1,79769313486232 x 10308 y -4,94065645841247 x 10-324

    positivos entre 4,94065645841247 x 10-324 y 1,79769313486232 x 10308

    Currency Moneda Mximo de 15 nmeros antes del signo decimal y cuatro despus de l.

    entre -922337203685477.5808 y +922337203685477.5807

    Boolean Lgica Solo puede contener valores True (verdadero) o False (falso)

    Date Fecha Desde el 01-mar-0200 al 31-dic-9999

    Variant Variante Cualquier valor, tipo de declaracin predeterminado

    Object Objeto Para hacer referencias a objetos

    Error por desbordamientoEs importante que recuerdes que si sobrepasas estos valores, se generar un error en tiempo de ejecucin que sellama desbordamiento.

    Error por desbordamiento: Error que se produce al sobrepasar la capacidad de una variable

    Option ExplicitVeamos este nuevo ejemplo de una macro:

    Sub DameTuNombre

    Dim Nombre As String

    'Otra de mis novias

    Nombre = "Miranda Otto"

    MsgBox Nombres

    End Sub

    Que ocurre al ejecutarla?, efectivamente no nos muestra nada en el cuadro de mensaje.Es debido a que para el lenguaje la variable Nombre es diferente de la variable Nombres; por lo tanto, a lavariable Nombres no le hemos asignado ningn valor.

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 27

    En este ejemplo es bastante evidente el error (una pequea s de diferencia); cuando se programa y haces uso de unascuantas decenas de variables declaradas, esto no es tan evidente a simple vista. Como comentamos antes, es el riesgoque podemos correr dado que OOo Basic admite la declaracin implcita de variables.Para minimizar este tipo de errores, disponemos de la instruccin Option Explicit. sta nos obliga a declarar(utilizando Dim) cualquier variable antes de usarla, impidiendo la declaracin implcita de variables.Debe ser escrita en la primera lnea del modulo (solo una vez por modulo, pero en cada uno de los mdulos). Nuestraanterior macro quedar as.

    Option Explicit

    Sub DameTuNombre

    Dim Nombre As String

    'Otra de mis novias

    Nombre = "Miranda Otto"

    MsgBox Nombres

    End Sub

    Vuelve a ejecutar esta macro y observa que ahora nos muestra el siguiente mensaje.

    Como ves el mensaje es muy claro: Variable no definida, es decir, no hemos usado la instruccin Dim paradeclararla.Observa en la imagen (el subrayado rojo): el IDE nos indica con una flecha la lnea donde ocurri el error.Recomendamos utilizar siempre Option Explicit al programar en OOo Basic

    Asignar el valor devuelto por una funcin a una variableAl inicio de este tema vimos que una macro (o programa) suele empezar con la solicitud de algn dato al usuario(generalmente). Tambin vimos que este dato (o datos) se guardan temporalmente en variables (generalmente), y quela instruccin bsica para ello es:

    Variable = Datoy como ejemplo mostramos.

    Sub MostrarNombre

    'Asignamos un valor a una variable

    'Una de mis novias

    Nombre = "Nicole Kidman"

    'Mostramos el valor de la variable

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.004.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 28

    MsgBox Nombre

    End Sub

    Existe otra forma de asignar un valor a una variable:

    Variable = FuncinEn donde Funcin, es cualquier instruccin que nos retorne un valor, veamos un ejemplo de la funcinInputBox.

    Sub MiNombre

    Dim Nombre As String

    Nombre = InputBox("Cual es tu nombre?")

    MsgBox Nombre

    End Sub

    Al ejecutar, mostrar el siguiente cuadro de dialogo:

    Y al escribir tu nombre y dar clic en Aceptar, mostrar lo que hayas escrito.

    Presentar los datos procesadosPara cerrar el circulo, y comprobar que si funciona el primer diagrama de este capitulo, hagamos algo con el dato:veamos cuantas letras tiene.Utilizaremos la funcin Len, que devuelve los caracteres que tiene una cadena. Nuestra macro completa quedaraas:

    Sub MiNombre

    Dim Nombre As String

    Dim NumeroDeLetras As Integer

    Nombre = InputBox( "Cual es tu nombre?" ) 'Entrada de datos

    NumeroDeLetras = '''Len'''( Nombre ) 'Proceso de datos

    MsgBox NumeroDeLetras 'Visualizacin de resultado

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.003.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.002.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables 29

    End Sub

    Observa como se cumple el flujo del diagrama mostrado al inicio de este captulo; es un gran simplificacin, peronos es bastante til para nuestros propsitos.

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones

    Diferenciar instrucciones y funcionesDijimos que las palabras claves o reservadas de OOo Basic se llaman as por que solo OOo Basic puede hacer uso deellas. Por ese motivo no puedes crear una macro que se llame MsgBox u Option; tampoco puedes declararvariables con alguna de estas palabras. Estas palabras clave, las podemos dividir en dos grandes grupos; lasinstrucciones y las funciones:

    Las instrucciones hacen algoLas funciones devuelven algo

    La diferencia entre una y otra es crucial para el entendimiento y desarrollo ptimo de los siguientes captulos.Usaremos una instruccin que ya conoces, MsgBox, para mostrar las diferencias entre las instrucciones y lasfunciones, pues esta palabra clave tiene la particularidad de poder usarse como una u otra dependiendo de nuestrasnecesidades.

    Utilizar MsgBox como una instruccinVeamos la siguiente linea de cdigo.

    MsgBox "Estoy aprendiendo OOo Basic"

    Estamos usando MsgBox como una instruccin, por que esta haciendo algo: nos muestra un mensaje en pantalla.El texto que debe mostrar se indica entre comillas dobles.

    Los textos en programacin se denominan cadena de texto

    http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.pnghttp://wiki.openoffice.org/w/index.php?title=File:Documentation_note.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones 30

    Argumentos de una instruccin o de una funcinEsta cadena de texto recibe el nombre de parmetro o argumento.Has probado a intentar ejecutar esta instruccin sin ningn argumento?.

    MsgBox

    En este caso, el IDE nos muestra el siguiente error.

    Y nos sealara con una flecha la linea del error, en este caso, la que contiene la instruccin MsgBox sinargumentos, con lo cual se deduce fcilmente que el argumento Mensaje, que en este caso es de tipo cadena detexto es necesario o requerido. La instruccin no trabajar mientras no incorporemos el/los argumentos requeridosen la linea de cdigo.MsgBox necesita algn otro argumento? No, al menos argumentos requeridos. Pero admite ms argumentos, comovemos en los siguientes ejemplo:

    MsgBox "Estoy aprendiendo OOo Basic", 16

    Y ahora esta:

    MsgBox "Estoy aprendiendo OOo Basic", 32

    Entonces, si queremos que te muestre un icono con la seal de stop, debemos agregar un segundo argumento quees opcional, llamado Tipo, y que es un nmero entero, el 16. Si deseas mostrar el icono de interrogacin, elargumento Tipo debe tener el valor 32, existen otro dos iconos que puedes mostrar, el de exclamacin (48) y el deinformacin (64):

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.008.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.007.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.006.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones 31

    La instruccin MsgBox, tiene un tercer argumento opcional que se llama Titulo, que nos permite personalizar eltitulo del cuadro de dialogo, que por defecto presenta el texto soffice:

    MsgBox "Estoy aprendiendo OOo Basic", 16, "Icono de Stop"

    MsgBox "Estoy aprendiendo OOo Basic", 32, "Icono de pregunta"

    MsgBox "Estoy aprendiendo OOo Basic", 48, "Icono de exclamacin"

    MsgBox "Estoy aprendiendo OOo Basic", 64, "Icono de informacin"

    Aprender a leer la sintaxis de una intruccin o de una funcinComo vemos la instruccin MsgBox admite tres argumentos, Mensaje, Tipo y Titulo. La sintaxis completa ycorrecta de esta instruccin es:

    MsgBox Mensaje As String, [Tipo As Integer], [Titulo As String]Es muy importante aprender a leer la estructura o sintaxis de una instruccin:

    Los argumentos se separan por comas Los argumentos opcionales se encierran entre corchetes Se especifica el tipo de dato que se espera se use en el argumento

    Si a una instruccin se le pasa un argumento con un tipo de dato que no es el que espera, generalmente la instruccin fallar o se puedenproducir errores o resultados imprevisibles

    Regresemos al argumento Tipo; tambin permite establecer los botones de comando mostrados en el cuadro dedialogo, segn esta la lista:

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.005.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.004.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.003.pnghttp://wiki.openoffice.org/w/index.php?title=File:Documentation_caution.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones 32

    Argumento Tipo Muestra los botones:

    0 Mostrar el botn Aceptar1 Mostrar los botones Aceptar y Cancelar2 Muestre los botones Cancelar, Repetir y Ignorar3 Mostrar los botones S, No y Cancelar4 Mostrar los botones S y No5 Mostrar los botones Repetir y Cancelar

    Por ejemplo:

    MsgBox "Estoy aprendiendo OOo Basic", 2, "Instruccin MsgBox"

    Para mostrar una combinacin de botones e iconos, establece el argumento Tipo como una suma de los valores quequieres mostrar; las dos lineas siguientes son equivalentes:

    MsgBox "Estoy aprendiendo OOo Basic, quieres continuar?", 4 + 32, "OOo Basic"

    MsgBox "Estoy aprendiendo OOo Basic, quieres continuar?", 36, "OOo Basic"

    Ambas muestran el siguiente dilogo:

    Utilizar MsgBox como una funcinUna vez presentado el dilogo en pantalla como sabemos que botn es el que presion el usuario?Utilizando MsgBox como funcin podremos responder a esta pregunta.Una funcin devuelve un valor, que podemos almacenar en una variable. Al utilizar funciones en el cdigo debemosde utilizar las siguientes reglas de sintaxis:

    Las funciones devuelven un valor de un tipo especifico (String, Integer, etc), por lo que es muyimportante que la variable donde guardemos el valor sea del mismo tipo que el valor que esperamos nosdevuelva la funcin.

    En las funciones, y a diferencia de las instrucciones, los argumentos se escriben siempre encerrados entreparntesis.

    Para asignar el valor devuelto a una variable, necesitamos usar el signo igual.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.002.pnghttp://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.001.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones 33

    La sintaxis completa de la funcin MsgBox es:

    Variable As Integer = MsgBox (Mensaje As String, [Tipo As Integer], [Titulo As String])Insistimos en que la variable que almacena el valor devuelto por la funcin debe ser declarada del mismo tipo delvalor que esperamos devuelva la funcin. En este caso en particular, la funcin MsgBox devuelve un entero(Integer), por lo que la variable donde guardes el valor de retorno debes de declararla como tipo entera(Integer).En la documentacin de OOo Basic normalmente viene especificado este valor de retorno para cada funcin.Es importante que aprendas a consultar esta documentacin, y con lo mostrado hasta ahora en estas pginas ya debesde ser capaz de hacer uso de cualquier funcin o instruccin, conocer que argumentos necesita y de que tipo, as,como saber en el caso de las funciones que tipo de valor de retorno obtendrs.

    Almacenar el valor devuelto por una funcinVeamos el ejemplo anterior, completo, ya con su variable de retorno.

    Sub InstruccionesYFunciones()

    Dim Respuesta As Integer

    Respuesta = MsgBox ( "Estoy aprendiendo OOo Basic, quieres continuar?", 36, "OOo Basic" )

    MsgBox Respuesta

    End Sub

    Esta macro mostrar el mismo cuadro de dialogo que la macro utilizando MsgBox como instruccin, pero la grandiferencia, es que en la variable Respuesta, tendremos el valor del botn que el usuario haya presionado, comosaber cual? y actuar en consecuencia, lo veremos ms adelante.Esta es la lista completa de los valores que puede retornar la funcin MsgBox:

    Valor de retorno El usuario presiono el botn

    1 Aceptar2 Cancelar3 Cancelar (si argumento Tipo = 2)4 Repetir5 Ignorar6 S7 No

    Cuanto ms conozcas y domines las instrucciones y funciones de OOo Basic, ms rpido y productivo sers.

    No es necesario aprender de memoria todo esto; si aprendes a reconocer la sintaxis y estructura de cualquier instruccin o funcinpodrs consultar la documentacin del lenguaje, la ayuda del programa, libros o pginas como sta y obtener la informacin que precisas

    Ms adelante aprenderemos a crear nuestras propias instrucciones (subrutinas) y funciones.

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_note.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones 34

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/ConstantesHemos visto como guardar un dato temporalmente en una variable, pero si se trata de un valor que ser constantedurante toda la ejecucin de una macro, utilizaremos constantes en lugar de variables.El uso de constantes es muy sencillo y nos evita tener que estar recordando valores especficos.Si tenemos que modificar el valor de la constante, solo tenemos que cambiarlo una vez en la seccin donde ladeclaramos.Para declarar una constante, usamos la palabra clave Const de la siguiente manera:

    Const I = 100

    Aunque lo ms recomendable es establecer el tipo de constante:

    Const PI As Single = 3.1416

    Es una practica comn en los programadores declarar las constantes con MAYSCULAS, si bien no es una regla.Un buen ejemplo del uso de constantes es utilizarlas para sustituir el uso de los nmeros enteros utilizados paradefinir el argumento Tipo de la instruccin MsgBox, visto en el apartado anterior:

    Const ICONO_PREGUNTA As Integer = 32

    Const BOTONES_SINO As Integer = 4

    MsgBox "Estoy aprendiendo OOo Basic", ICONO_PREGUNTA + BOTONES_SINO, "OOo Basic"

    Para nombrar a las constantes se aplican las mismas reglas vistas para nombrar las macros y las variables (VerDeclarando y usando variables).En funcin de la magnitud de tu proyecto, puede ser una buena prctica de programacin utilizar un nico modulopara declarar variables y constantes.

    http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Constantes 35

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bifurcaciones

    Qu son y para qu sirvenTe has puesto a pensar cuantas decisiones tomas al da? La vida esta hecha de decisiones, o eso dicen, y en lasmacros no nos salvamos de ellas; casi siempre hay que estar decidiendo algo y de acuerdo a esa decisin tomamosuno u otro camino. Afortunadamente en OOo Basic es mucho ms sencillo que en la vida. Veamos como hacerlo.Un pregunta importante: Quieres ser mi novia?Si responde que no que hago?, pero y si dice que s? Preguntmosle.

    Option Explicit

    Sub Novios

    Dim Respuesta As Integer

    Respuesta = MsgBox( "Quieres ser mi novia?", 32 + 4, "Novios" )

    MsgBox Respuesta

    End Sub

    En la macro anterior nicamente estamos obteniendo la informacin del botn que seleccion el usuario: en lavariable Respuesta tendremos un 6 si puls el botn S o un 7 si puls el botn No, de acuerdo a los valoresque ya vimos en Instrucciones y funciones en OOo Basic.

    Instruccin If... Then... ElseDado que sabemos que botn eligi el usuario podremos actuar en consecuencia, dependiendo de su respuesta,gracias a la instruccin If...Then...Else. Veamos su uso.

    Sub Novios

    Dim Respuesta As Integer

    'La pregunta importante

    Respuesta = MsgBox( "Quieres ser mi novia?", 32 + 4, "Novios" )

    'Evaluamos la respuesta, recuerda, un 7 es igual No

    If Respuesta = 7 Then

    MsgBox "Pues no sabes lo que te pierdes"

    End If

    End Sub

    Con esta macro solo podemos actuar cuando se presion el botn No. Para actuar tambin si se presion el botnS, modificaremos la macro.

    Sub Novios

    Dim Respuesta As Integer

    'La pregunta importante

    Respuesta = MsgBox( "Quieres ser mi novia?", 32 + 4, "Novios" )

    'Evaluamos la respuesta, recuerda, un 7 es igual No

    http://forum.openoffice.org/es/forum/viewforum.php?f=50http://wiki.openoffice.org/w/index.php?title=ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/InstruccionesFunciones%23Utilizar_MsgBox_como_una_funci%C3%B3n
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bifurcaciones 36

    If Respuesta = 7 Then

    MsgBox "Pues no sabes lo que te pierdes"

    Else

    'Cualquier otro valor diferente del que se evala en la condicin

    MsgBox "Que inteligente eres"

    End If

    End Sub

    Ahora s que actuamos en consecuencia a cada uno de los botones de nuestro cuadro de dialogo.La instruccin Else, significa en cualquier otro caso, es decir, en nuestro ejemplo, si el valor de la variableRespuesta era 7, la ejecucin continua en la lnea siguiente, pero si la variable tiene cualquier otro valor,entonces hace lo segundo, aqu un ejemplo.

    Sub DiaDeLaSemana

    Dim Dia As Integer

    'Solicitar un numero digamos entre 1 y 10

    Dia = InputBox( "Que da quieres saber (1 a 10)?" )

    If Dia = 1 Then

    MsgBox "Este da es Domingo"

    Else

    MsgBox "Este da NO es Domingo"

    End If

    End Sub

    Observa como slo si Dia toma el valor 1 se nos informa que es Domingo; cualquier otro valor nos muestra elsegundo mensaje.

    Instruccin If... Then... Elseif Then... ElseSi queremos saber que da de la semana corresponde a otro valor, usaremos una variante de la instruccinIf...Then...Else. veamos como.

    Sub DiaDeLaSemana

    Dim Dia As Integer

    'Solicitar un numero digamos entre 1 y 10

    Dia = InputBox( "Que da quieres saber (1 a 10)?" )

    If Dia = 1 Then

    MsgBox "Este da es Domingo"

    ElseIf Dia = 2 Then

    MsgBox "Este da es Lunes"

    Else

    MsgBox "NO s que da es"

    End If

    End Sub

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bifurcaciones 37

    De esta forma podemos hacer tantas comparaciones como queramos. Intenta completar la macro t mismo para quenos informe de todos los das de la semana y en caso de otro valor nos informe que no es un da de la semana.Resumiendo: la estructura general de la instruccin If...Then...Else es.

    If CONDICION Then

    'Cdigo si condicin es verdadera

    [ElseIf CONDICION_2 Then]

    'Cdigo si condicin 2 es verdadera

    [ElseIf CONDICION_n Then]

    'Cdigo si condicin n es verdadera

    [Else]

    'Cualquier otro valor

    End If

    Recuerda que las opciones indicadas entre corchetes son opcionales.CONDICION, puede ser cualquier instruccin susceptible de ser evaluada como verdadera (True) o falsa (False) ypuede ser tan sencilla como las vistas hasta ahora, o compleja como la del siguiente ejemplo:

    ElseIf bolHayComillas = False And (strPalabra = "'" Or UCase(strPalabra) = "REM") Then

    ElseIf EsPalabraClave(strPalabra) And bolHayComillas = False Then

    Si se necesita evaluar ms de una condicin, debemos relacionarlas con operadores como And (y) o como Or (o)que veremos ms adelante.

    Instruccin Select...CaseCuando necesitamos evaluar la misma variable varias veces es posible usar la instruccin de bifurcacinSelect...Case. Veamos un ejemplo.

    Sub DiaDeLaSemana

    Dim Dia As Integer

    Dia = InputBox( "Que da quieres saber (1 a 10)?" )

    Select Case Dia

    Case 1

    MsgBox "Este da es Domingo"

    Case 2

    MsgBox "Este da es Lunes"

    Case 3

    MsgBox "Este da es Martes"

    Case 4

    MsgBox "Este da es Mircoles"

    Case Else

    MsgBox "NO s que da es"

    End Select

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bifurcaciones 38

    End Sub

    Se pueden indicar rangos de valores a evaluar: Separados por una coma (por ejemplo 1,3,7) Utilizando la palabra clave To (por ejemplo, 2 To 5):

    Sub DiaDeLaSemana

    Dim Dia As Integer

    Dia = InputBox( "Que da quieres saber (1 a 10)?" )

    Select Case Dia

    'Aqu evaluamos si es sbado o domingo

    Case 1, 7

    MsgBox "Por fin a descansar"

    'Y aqu si es entre semana, de Lunes a Viernes

    Case 2 To 6

    MsgBox "Que horror, da de trabajo"

    Case Else

    MsgBox "NO s que da es"

    End Select

    End Sub

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    http://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 39

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/BuclesEn ocasiones necesitamos repetir un determinado proceso un determinado nmero de veces, o hasta que se cumplauna condicin, o mientras se cumpla una condicin.OOo Basic incorpora dos estructuras para crear bucles o repeticiones:

    For...Next Do...Loop

    Veamos ejemplos de cada una de ellas:

    Estructura For...NextLa sintaxis de esta estructura es:

    For Variable = Inicio To Fin [Step Salto]

    'codigo

    [Exit For]

    Next [Variable]

    Lo indicado entre corchetes es opcional.Empecemos con un ejemplo sencillo:

    Option Explicit

    Sub PortarseBien

    Dim Contador As Integer

    'Inicia el contador con los limites especificados

    For Contador = 1 To 2

    'Este es el cdigo que se ejecuta el numero de veces

    'especificado con los limites en nuestro caso 2 veces

    MsgBox "Tengo que portarme bien"

    Next

    End Sub

    Para hacer uso de la estructura For...Next, es necesaria una variable de apoyo; en nuestro caso escogimos la variableContador; con frecuencia encontraras que algunos programadores usan la letra I, J, K, L, N y siguientes comocontadores, pero tu eres libres de elegir y usar la variable que ms te plazca.El cdigo anterior solo mostrar el mensaje dos veces, que son las indicadas por el lmite inferior y superior delcontador especificadas con 1 To 2.Veamos otro ejemplo para establecer valores ms grandes y de paso, aprovecharemos para ver como sumarcadenas de texto. En programacin, la suma de cadenas de texto se conoce como concatenar y no es otra cosa quepegar cadenas de texto una tras la otra:

    Sub TuNombre

    Dim Nombre As String

    Dim Apellido1 As String

    Dim Apellido2 As String

    Dim NombreCompleto As String

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 40

    Nombre = InputBox( "Cual es tu Nombre?")

    Apellido1 = InputBox( "Cual es tu primer Apellido?")

    Apellido2 = InputBox( "Y el segundo?")

    NombreCompleto = Nombre + Apellido1 + Apellido2

    MsgBox "Tu nombre completo es: " + NombreCompleto

    End Sub

    En el cdigo solicitamos el nombre y apellido, y al final, lo mostramos en slo una lnea de texto. En el ejemplohemos utilizado el operador +, pero es ms comn usar el operador ampersan (&) como concatenador de cadenas detexto.

    Sub TuNombre2

    Dim Nombre As String

    Dim Apellido1 As String

    Dim Apellido2 As String

    Dim NombreCompleto As String

    Nombre = InputBox( "Cual es tu Nombre?")

    Apellido1 = InputBox( "Cual es tu primer Apellido?")

    Apellido2 = InputBox( "Y el segundo?")

    NombreCompleto = Nombre & Apellido1 & Apellido2

    MsgBox "Tu nombre completo es: " & NombreCompleto

    End Sub

    En el anterior ejemplo el nombre completo se muestra sin espacios. Puedes modificar el cdigo para que muestreespacios entre el nombre y los apellidos.Hagamos nuestro bucle ms grande; probaremos primero con 10.

    Sub PortarseBien2

    Dim Contador As Integer

    Dim Texto As String

    For Contador = 1 To 10

    Texto = Texto & "Tengo que portarme bien"

    Next

    MsgBox Texto

    End Sub

    Para mejorarlo un poco le agregaremos un saldo de lnea al final de cada frase:

    Sub PortarseBien3

    Dim Contador As Integer

    Dim Texto As String

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 41

    For Contador = 1 To 10

    Texto = Texto & "Tengo que portarme bien" & Chr(13)

    Next

    MsgBox Texto

    End Sub

    Mejoramos agregndole el nmero a cada lnea:

    Sub PortarseBien4

    Dim Contador As Integer

    Dim Texto As String

    For Contador = 1 To 10

    Texto = Texto & Contador & ".- Tengo que portarme bien" & Chr(13)

    Next

    MsgBox Texto

    End Sub

    Lmites inferior y superiorLos lmites inferior y superior no necesariamente tienen que ser positivos:

    For Contador = -5 To 5

    La instruccin StepTampoco tienen por que ir de uno en uno, cuando podemos ir de dos en dos, de tres en tres o en el intervalo quenecesitemos, utilizando la palabra Step.

    Sub PortarseBien5

    Dim Contador As Integer

    Dim Texto As String

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.Bucles.001.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 42

    For Contador = 1 To 20 Step 2

    Texto = Texto & Contador & ".- Tengo que portarme bien" & Chr(13)

    Next

    MsgBox Texto

    End Sub

    Step no necesariamente tiene que ser entero, ni positivo:

    For Contador = 100 To 10 Step -10

    Una prctica habitual es escribir despus de la palabra clave Next el mismo nombre de la variable que se ha usadocomo contador, por ejemplo.

    For Contador = 10 To 100 Step 5

    ' Aqu ira el cdigo

    Next Contador

    Es muy til cuando existen varios bucles de repeticin anidados.

    Sub BuclesAnidados

    Dim co1 As Integer, co2 As Integer

    For co1 = 1 To 5

    For co2 = 1 To 10

    Next co2

    Next co1

    End Sub

    http://wiki.openoffice.org/w/index.php?title=File%3AES.StarBasic.ElLenguajeOOoBasic.Bucles.002.png
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 43

    La instruccin Exit ForLa instruccin Exit For nos sirve para salir anticipadamente de un ciclo For...Next.

    Option Explicit

    Sub Usando_Exit_For()

    Dim co1 As Integer

    Dim sLetra As String

    Dim sVocales As String

    Dim sConsonantes As String

    For co1 = 1 To 100

    sLetra = Chr( Rnd() * 25 + 65 )

    Select Case sLetra

    Case "A", "E", "I", "O", "U"

    sVocales = sVocales & " " & sLetra

    Case "S"

    Exit For

    Case Else

    sConsonantes = sConsonantes & " " & sLetra

    End Select

    Next

    MsgBox "El ciclo termino en: " & co1 & Chr(13) & Chr(13) & _

    "Vocales: " & sVocales & Chr(13) & _

    "Consonantes: " & sConsonantes, 0, "Ejemplo Exit For"

    End Sub

    La funcin Chr(valor) nos devuelve el carcter ASCII correspondiente ha dicho valor. Por ejemplo, la letra A tieneun valor de 65 y la letra Z tiene un valor de 90. Por ello en la lnea:

    sLetra = Chr( Rnd() * 25 + 65 )

    Obtenemos un valor aleatorio entre 65 y 90 y Chr nos devuelve el carcter correspondiente al valor aleatorioobtenido. Despus evaluamos si es una vocal, si es la letra S o si es una consonante. Slo en el caso de que elcarcter devuelto sea una S, interrumpimos el ciclo For...Next y salimos utilizando el Exit For.Al final mostramos el valor del contador para saber si termin el ciclo o sali antes.

    Estructura Do...LoopAl tipo de ciclo usado en For..Next, algunos autores le llaman determinado pues sabemos donde empieza y dondetermina, hay otro tipo de ciclos llamados indeterminados, pues dependen de otras condiciones para empezar oterminar el ciclo; veamos cuales son:La instruccin Do...Loop, tambin nos sirve para crear repeticiones, pero en lugar de usar un contador, se evala unacondicin para decidir cuando terminar un bucle e incluso cuando empieza o si empieza.Veamos ejemplos:

    Sub DameTuNombre

    Dim Nombre As String

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 44

    Do

    Nombre = InputBox( "Cual es tu Nombre?")

    Loop While Nombre = "

    End Sub

    Analicemos lnea por lnea el cdigo anterior.

    Sub DameTuNombre 'Iniciamos la macro

    Dim Nombre As String 'Declaramos una variable de texto

    Do 'Iniciamos el bucle

    Nombre = InputBox( "Cual es tu Nombre?") 'Solicitamos un valor, en este caso un nombre

    Loop While Nombre = "" 'Continuamos el bucle '''mientras''' la condicin sea VERDADERA

    End Sub 'Finalizamos la macro

    Mediante el cdigo forzamos al usuario a escribir un valor en el cuadro de dialogo, si bien suele ser deseableproporcionar al usuario una forma de cancelar o interrumpir el bucle. Veamos una primera alternativa:

    Sub DameTuNombre2

    Dim Nombre As String

    Dim Respuesta As Integer

    Do

    Nombre = InputBox( "Cual es tu Nombre?" )

    If Nombre = "" Then

    Respuesta = MsgBox( "Al parecer no escribiste nada, realmente quieres salir?", 32 + 4, "Salir" )

    'Recuerda que un 6 significa que el usuario presiono el botn SI

    If Respuesta = 6 Then

    'Establecemos la variable con cualquier cosa para que termine el bucle

    Nombre = "cualquier cosa"

    End If

    End If

    Loop While Nombre = ""

    End Sub

    El cdigo anterior parece que funciona bien, pero hay una simple forma de engaarla. Prueba a introducir variosespacios y vers que sale inmediatamente. Para subsanar este inconveniente haremos uso de una funcin integrada enOOo Basic que sirve para eliminar los espacios vacos al inicio y al final de una cadena: la instruccin Trim, que seutiliza de la siguiente forma.

    Sub DameTuNombre3

    Dim Nombre As String

    Dim Respuesta As Integer

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 45

    Do

    Nombre = InputBox( "Cual es tu Nombre?" )

    '''Nombre = Trim( Nombre )'''

    If Nombre = "" Then

    Respuesta = MsgBox( "Al parecer no escribiste nada, realmente quieres salir?", 32 + 4, "Salir" )

    'Recuerda que un 6 significa que el usuario presiono el botn SI

    If Respuesta = 6 Then

    'Establecemos la variable con cualquier cosa para que termine el bucle

    Nombre = "cualquier cosa"

    End If

    End If

    Loop While Nombre = ""

    End Sub

    Hemos mejorado su comportamiento, si bien siempre se nos puedes ocurrir ms alternativas por prever o mejorar elcdigo.

    La instruccin UntilVeamos otra variante de esta estructura que nos permite invertir la lgica de la condicin:

    Sub DameTuNombre4

    Dim Nombre As String

    Do

    Nombre = InputBox( "Cual es tu Nombre?")

    Loop '''Until''' Nombre ""

    End Sub

    Ahora con la instruccin Until evaluamos la variable Nombre. Mientras sea diferente de vaca, es decir, contengaalgo, el bucle se repetir, con lo que estamos definiendo hasta cuando se repite. La condicin tiene que seguir siendoverdadera para que el bucle termine.Veamos ahora la macro completa, con validacin includa.

    Sub DameTuNombre5

    Dim Nombre As String

    Dim Respuesta As Integer

    Do

    Nombre = InputBox( "Cual es tu Nombre?")

    Nombre = Trim( Nombre )

    If Nombre = "" Then

    Respuesta = MsgBox( "Al parecer no escribiste nada, realmente quieres salir?", 32 + 4, "Salir" )

    'Recuerda que un 6 significa que el usuario presiono el botn SI

    If Respuesta = 6 Then

    'Establecemos la variable con cualquier cosa para que termine el bucle

    Nombre = "cualquier cosa"

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 46

    End If

    End If

    Loop Until Nombre ""

    End Sub

    Tal vez te preguntaras porque dos formas de hacer lo mismo? No todos tenemos el mismo modo de razonar. En casitodo y ms en programacin, hay ms de una forma de hacer las mismas cosas, lo cual enriquece y es bueno paraampliar horizontes.

    La instruccin Do WhileLas dos variantes de la estructura que hemos visto ejecutan el cdigo escrito entre Do..Loop al menos una vez. Sinecesitamos o queremos controlar que en caso de cumplirse una condicin no se ejecute ni una sola vez, pasaremosla instruccin al inicio de la estructura de la siguiente forma:

    Sub DameTuNombre6

    Dim Nombre As String

    Dim Lista As String

    'Solicitamos un dato

    Nombre = InputBox( "Dame un Nombre?")

    'Le quitamos los espacios sobrantes al inicio y al final

    Nombre = Trim( Nombre )

    'Iniciamos el bucle, si la variable es diferente de vaca

    Do While Nombre ""

    'Formamos una lista de los nombres introducidos

    Lista = Lista & " - " & Nombre

    'Solicitamos otro nombre

    Nombre = Trim( InputBox( "Dame otro Nombre?") )

    Loop

    'Si la lista contiene algo lo mostramos

    If Lista "" Then

    MsgBox Lista

    End If

    End Sub

    Destacamos las dos formas en que hacemos uso de la instruccin InputBox: la primera de forma directa y la segunda,de forma anidada.Anidar funciones resulta muy familiar si eres un usuario medio/avanzado de cualquier hoja de calculo. La anidacinde funciones resulta muy til en programacin.Existe otra variante para lograr el mismo propsito, utilizando la palabra clave Until, en lugar de While.

  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Bucles 47

    La instruccin Exit DoSi deseamos finalizar anticipadamente un bucle Do...Loop, podemos utilizar la palabra clave Exit Do de la siguienteforma:

    Option Explicit

    Sub Usando_Exit_Do()

    Dim sClave As String

    Dim sTmp As String

    sClave = "mellon"

    Do

    sTmp = Trim(InputBox("Habla amigo y entra"))

    If sTmp = "mellon" Then

    MsgBox "Y se abren las puertas de Moria"

    Exit Do

    End If

    Loop Until sTmp = "salir"

    End Sub

    Por lo tanto, disponemos de dos formas de terminar el bucle: la condicin final, y utilizando Exit Do.

    Ten cuidado con los ciclos indeterminados, una condicin mal planteada te puede dejar dentro de un ciclo infinito

    Con los elementos vistos hasta ahora ya se pueden hacer muchas cosas. Podemos empezar a a pensar en comoautomatizar esos pasos tan repetitivos y tediosos que a veces se nos presentan; para ello, tendremos presente siempreen mente el diagrama que vimos en el apartado Declarar Variables.

    Si tienes dudas acerca de lo aqu explicado, tienes algn problema con AOO,o quieres ampliar la informacin, no dudes en dirigirte al

    Foro Oficial en espaol de Apache OpenOffice para Macros y API UNO [2]

    http://wiki.openoffice.org/w/index.php?title=File:Documentation_caution.pnghttp://wiki.openoffice.org/w/index.php?title=ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/DeclararVariables%23Del_dato_a_la_informaci.C3.B3nhttp://wiki.openoffice.org/w/index.php?title=File%3AES.Plantillas.Logo_foro_es.pnghttp://forum.openoffice.org/es/forum/viewforum.php?f=50
  • ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/Matrices 48

    ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/ElLenguajeOOoBasic/MatricesEs posible manipular muchos datos en una sola variable utilizando matrices. Pueden ser de mucha utilidad oconvertirse en un verdadero galimatas si no se manejan correctamente.Es importante que aprendas a utilizarlas, pues muchas estructuras de OpenOffice.org vienen implementadas enmatrices.

    Sintaxis bsica de una matrizLa sintaxis ms sencilla para declarar una matriz es la siguiente:

    Dim Nombre_Matriz( Tamao As TipoVariable ) As TipoEn donde Nombre_Matriz tiene que cumplir las mismas condiciones que para nombrar las macros y las variablesvistas en Declarando y usando variables.Tamao se refiere al nmero de elementos que contendr la matriz. Si como TipoVariable se indica Byte, podralmacenar 255 elementos; si es Integer, 32.000, y si es Long, ms de dos mil millones, lo que tal vez quiera decir quees hora de pasar a usar bases de datos.En todo caso, el tamao mximo est condicionado por el limite de la memoria Ram del equipo donde se ejecute.

    Declarar matrices unidimensionalesResulta fcil pensar en las matrices como una lista de valores en su presentacin ms sencilla, o en una tabla de filasy columnas en las mas compleja.Por ejemplo, una lista de los das de la semana sera as:

    Domingo Lunes Martes Mircoles Jueves Viernes Sbado

    Almacenar la lista en una matriz sera as:

    Sub Ejemplo_Matrices1()

    Dim miSemana(6) As String

    miSemana(0) = "Domingo"

    miSemana(1) = "Lunes"

    miSemana(2) = "Martes"

    miSemana(3) = "Mircoles"

    miSemana(4) = "Jueves"

    miSemana(5) = "Viernes"

    miSemana(6) = "Sbado"

    MsgBox miSemana( 3 )

    End Sub

    Con un simple bucle se puede acceder a toda la matriz: