apuntes de visual basic para office (vba)

64
INTRODUCCIÓN A LA PROGRAMACIÓN DE OFFICE. Visual Basic para Aplicaciones (VBA) MACROS 2.1. UTILIZACIÓN DE LA GRABADORA DE MACROS. 2.2. EJECUCIÓN DE UNA MACRO. 2.1 VISUALIZACIÓN DEL CÓDIGO CORRESPONDIENTE A UNA MACRO. 3 EL EDITOR DE VISUAL BASIC 3.1 ENTORNO DE PROGRAMACIÓN EN EXCEL Y WORD 4 EL MODELO DE PROGRAMACIÓN ORIENTADA A OBJETOS 4.1 LOS OBJETOS DE MICROSOFT OFFICE. 4.2 UTILIZACIÓN DEL EXAMINADOR DE OBJETOS 5 EL MÓDULO DE CÓDIGO 5.1 AYUDAS A LA HORA DE ESCRIBIR EL CÓDIGO 6 TIPOS DE DATOS 6.1 DECLARACIÓN DE VARIABLES Y CONSTANTES 6.2 DECLARACIÓN DE VARIABLES 6.3 REGLAS PARA PONER NOMBRES A LAS VARIABLES 6.4 DECLARACIÓN DE CONSTANTES 6.5 REGLAS PARA PONER NOMBRES A LAS CONSTANTES 6.6 ALCANCE O ÁMBITO DE LAS VARIABLES 7 CONTROL DEL ORDEN DE EJECUCIÓN 7.1 SENTENCIAS DE SELECCIÓN 7.2 SENTENCIAS DE REPETICIÓN (BUCLES) 8 DEPURACIÓN DEL CÓDIGO 8.1 PUNTOS DE INTERRUPCIÓN (BREAKPOINTS) 8.1.1 INSERCIÓN DE PUNTOS DE INTERRUPCIÓN EN EL CÓDIGO 8.1.2 ELIMINAR PUNTOS DE INTERRUPCIÓN 8.1.3 MODO INTERRUPCIÓN 8.1.4 CUADRO DE SUGERENCIA DE DATOS 9 COMUNICACIÓN ENTRE PROCEDIMIENTOS Y FUNCIONES 10 OBJETOS DE EXCEL 10.1 OBJETO APPLICATION 10.2 Pseudoobjeto ActiveWorkbook. 10.3 Colección WorkSheet (Worksheets) End Sub 10.4 Objeto Range. 10.5 Objeto Font. 10.6 Colección DocumentProperty (DocumentProperties). Ascensor Puerta Cabina Application Application Workbooks Documents 3 Excel 2 Word Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ... 1 de 64 21/04/2015 17:27

Upload: inggimenez

Post on 13-Nov-2015

36 views

Category:

Documents


6 download

DESCRIPTION

Visual Basic

TRANSCRIPT

  • INTRODUCCIN A LA PROGRAMACIN DEOFFICE. Visual Basic para Aplicaciones (VBA)

    MACROS

    2.1. UTILIZACIN DE LA GRABADORA DE MACROS.

    2.2. EJECUCIN DE UNA MACRO.

    2.1 VISUALIZACIN DEL CDIGO CORRESPONDIENTE A UNA MACRO.

    3 EL EDITOR DE VISUAL BASIC

    3.1 ENTORNO DE PROGRAMACIN EN EXCEL Y WORD

    4 EL MODELO DE PROGRAMACIN ORIENTADA A OBJETOS

    4.1 LOS OBJETOS DE MICROSOFT OFFICE.

    4.2 UTILIZACIN DEL EXAMINADOR DE OBJETOS

    5 EL MDULO DE CDIGO

    5.1 AYUDAS A LA HORA DE ESCRIBIR EL CDIGO

    6 TIPOS DE DATOS

    6.1 DECLARACIN DE VARIABLES Y CONSTANTES

    6.2 DECLARACIN DE VARIABLES

    6.3 REGLAS PARA PONER NOMBRES A LAS VARIABLES

    6.4 DECLARACIN DE CONSTANTES

    6.5 REGLAS PARA PONER NOMBRES A LAS CONSTANTES

    6.6 ALCANCE O MBITO DE LAS VARIABLES

    7 CONTROL DEL ORDEN DE EJECUCIN

    7.1 SENTENCIAS DE SELECCIN

    7.2 SENTENCIAS DE REPETICIN (BUCLES)

    8 DEPURACIN DEL CDIGO

    8.1 PUNTOS DE INTERRUPCIN (BREAKPOINTS)

    8.1.1 INSERCIN DE PUNTOS DE INTERRUPCIN EN EL CDIGO

    8.1.2 ELIMINAR PUNTOS DE INTERRUPCIN

    8.1.3 MODO INTERRUPCIN

    8.1.4 CUADRO DE SUGERENCIA DE DATOS

    9 COMUNICACIN ENTRE PROCEDIMIENTOS Y FUNCIONES

    10 OBJETOS DE EXCEL

    10.1 OBJETO APPLICATION

    10.2 Pseudoobjeto ActiveWorkbook.

    10.3 Coleccin WorkSheet (Worksheets)

    End Sub

    10.4 Objeto Range.

    10.5 Objeto Font.

    10.6 Coleccin DocumentProperty (DocumentProperties).

    Ascensor

    Puerta

    Cabina

    ApplicationApplication Workbooks

    Documents

    3 Excel2 Word

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    1 de 64 21/04/2015 17:27

  • 10.7 Coleccin Shape (Shapes).

    11 OBJETOS DE WORD

    11.1 Objetos comunes con Excel.

    11.2 Coleccin Document (Documents).

    Dim oUnDocu As Object

    Dim oUnDocu As Object

    11.3 Pseudoobjeto ActiveDocument.

    11.4 Objeto Range.

    11.5 Coleccin Section (Sections).

    11.6 Coleccin Paragraph (Paragraphs).

    11.7 Coleccin Sentence (Sentences).

    11.8 Coleccin Word (Words).

    12 OBJETOS DE ACCESS

    12.1 Objeto Application

    12.2 Coleccin Database (Databases).

    12.3 Coleccin Property (Properties).

    12.4 Coleccin Recordset (Recorsets).

    12.5 Coleccin Field (Fields).

    12.6 Objeto DoCmd.

    13 COMUNICACIN ENTRE APLICACIONES

    13.1 Apertura De Aplicaciones

    13.2 Utilizacin de Aplicaciones ya Existentes

    13.3 Finalizacin de una Aplicacin

    13.4 Utilizacin de los Objetos de una Aplicacin

    13.5 Comunicacin con Access

    1 INTRODUCCIN A LA PROGRAMACIN DE OFFICEA pesar de las mltiples opciones que ofrece el conjunto de aplicaciones de Microsoft Office (en especial, Excel, Access y Word), siempre existela posibilidad de que tales opciones no satisfagan por completo los requerimientos del usuario.

    Por ello, resulta interesante disponer de un conjunto de utilidades que permiten personalizar la interfaz grfica y procesar la informacin con

    toda la complejidad que se necesite. Estas utilidades estn reunidas en un entorno de programacin denominado Editor de Visual Basic.

    Visual Basic es un lenguaje de programacin con el cual se hace posible realizar programas personalizados que se comuniquen e interaccionencon el conjunto de herramientas grficas de Office.

    Este lenguaje de programacin nos permitir trabajar sobre aspectos como: mensajes de error personalizados, asistentes para la realizacin de

    cualquier accin dentro de una aplicacin de Office, formularios personalizados, etc.

    MACROS

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    2 de 64 21/04/2015 17:27

  • Antes de entrar en la programacin de Office, conviene estudiar un aspecto ntimamente relacionado con lo anterior: se trata de la utilizacin

    de macros.

    Una macro es un conjunto de acciones que estn reunidas y automatizadas, de modo que se ejecutan como una nica accin. Realmente, se

    trata de un programa en Visual Basic que realiza de forma automtica una serie de operaciones a menudo repetitivas y rutinarias.

    Tanto Excel como Word proporcionan un sencillo mtodo de creacin de macros: se trata de la grabadora de macros. Sin embargo, sta no

    aparece en Access, sino que en su lugar disponemos en esta aplicacin de un editor de macros con unas acciones ya predefinidas.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    3 de 64 21/04/2015 17:27

  • 2.1. UTILIZACIN DE LA GRABADORA DE MACROS.

    Para crear una nueva macro, seguiremos los siguientes pasos:

    1. Picar en la opcin de la barra de mens Herramientas-Macro-Grabar nueva macro. Aparecer un cuadro de dilogo donde se ha de indicar:

    Nombre con el que identificaremos la macro.

    Posibilidad de hacer que la macro aparezca como en alguna de las barras (slo en Word) o bien que se pueda ejecutar al pulsar alguna

    combinacin de teclas (para Word y Excel).

    Proyectos a los que se asociar la macro (el documento o libro actual, todos los documentos construidos con la plantilla Normal.dot, etc.).

    Finalmente, una breve descripcin de la macro.

    Una vez especificados los valores requeridos, picaremos en el botn Aceptar.

    2. A continuacin, se observar que la opcin del men Herramientas-Macro-Grabar nueva macro ha sido sustituida por

    Herramientas-Macro-Detener grabacin. Esto nos indica que la mayora de las acciones que realicemos a continuacin, hasta

    seleccionar dicha opcin de la barra de mens, pasarn a formar parte de la macro que est siendo grabada. Del mismo modo, aparecer en

    la pantalla el botn Detener grabacin.

    3. Una vez efectuadas todas las acciones que deseamos formen parte de la macro, pulsaremos el botn Detener grabacin o la opcin

    correspondiente de la barra de mens.

    2.2. EJECUCIN DE UNA MACRO.

    Una vez almacenada una macro, puede ser utilizada siempre que se desee. Para ello, seguiremos los siguientes pasos:

    1. Seleccionar la opcin Herramientas-Macro-Macros de la barra de mens. Aparecer un cuadro de dilogo en el se podr seleccionar, en

    primer lugar, la procedencia de las macros, tras lo cual aparecer una lista; de sta, escogeremos la macro que se quiere ejecutar.

    2.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    4 de 64 21/04/2015 17:27

  • Se podr ejecutar la macro por completo (Ejecutar) o bien descomponindola en las diferentes acciones que la forman (Paso a paso).

    2.1 VISUALIZACIN DEL CDIGO CORRESPONDIENTE A UNA MACRO.

    Como se indic anteriormente, una macro realmente se compone de una serie de lneas de cdigo en Visual Basic; es decir, se trata de un

    Mdulo de cdigo.

    Para poder visualizar el cdigo que corresponde a una macro, podemos seleccionar la opcin Herramientas-Macro-Macros. A continuacin,

    picaremos en el botn Modificar, tras lo cual aparecer en pantalla el entorno de programacin de Visual Basic. En la ventana de Mdulo de

    cdigo se mostrar el conjunto de instrucciones que ejecutan las acciones que forman parte de la macro. Tambin podemos pulsar la combinacin

    de teclas ALT + F11.

    3 EL EDITOR DE VISUAL BASIC

    A la hora de programar en Visual Basic para Aplicaciones, disponemos de un entorno de programacin bastante completo: en Excel y Word

    tenemos el Editor de Visual Basic. Sin embargo, en Access no disponemos de la totalidad del editor, sino simplemente de algunas de sus ventanas.

    3.1 ENTORNO DE PROGRAMACIN EN EXCEL Y WORD

    Tanto en Excel como en Word, al poner en funcionamiento el editor de Visual Basic desde la opcin Herramientas-Macro-Editor de Visual

    Basic de la barra de mens, la pantalla ofrecera un aspecto similar al que muestra la figura siguiente.

    Veamos a continuacin la utilidad de cada una de las ventanas o cuadros que se observan:

    Explorador de proyectos. Esta ventana muestra una lista jerrquica de los proyectos y todos los elementos contenidos en los mismos y a

    los que hace referencia cada uno de ellos. Cada documento, libro o base de datos que se abra en Word, Excel o Access, respectivamente,

    lleva asociado un proyecto de VBA. Un proyecto de VBA puede estar formado por un nmero arbitrario de mdulos de cdigo o

    UserForms.

    Examinador de objetos. Representa algo similar a un mapa para recorrer los objetos, mtodos, propiedades y eventos relacionados con un

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    5 de 64 21/04/2015 17:27

  • control ActiveX o una aplicacin (Word, Excel o Access). Mediante el Examinador de objetos, la forma de programar un objeto

    determinado se simplifica.

    Mdulo de cdigo. En esta ventana se escribe el cdigo en Visual Basic que posteriormente se ejecutar. Hay tres tipos de mdulos de

    cdigo: estndar, clase y formulario, cada uno de los cuales posee un cometido especfico. Estos mdulos tienen la misin de agrupar

    mdulos de cdigo con una funcin comn.

    Ventana UserForm. Esta ventana contiene un UserForm (Formulario del usuario), con el cual se pueden crear cuadros de dilogo

    personalizados para su uso en los programas de VBA. Mediante un UserForm y los controles ActiveX del cuadro de herramientas se podr

    construir cualquier cuadro de dilogo personalizado, adaptado a las necesidades del programa.

    Cuadro de herramientas. En l encontramos una serie de controles ActiveX , de modo que podemos seleccionarlos y arrastrarlos hacia el

    UserForm (al igual que se haca con la caja de herramientas sobre un formulario de Access).

    Ventana Inmediato. En ella, podremos introducir y ejecutar una lnea de cdigo en Visual Basic, y ver de inmediato el resultado que se

    obtendra. Por tanto, se utilizar a la hora de depurar cdigo de Visual Basic.

    Otras ventanas que podemos hacer aparecer en el entorno de programacin, y que sirven para realizar la depuracin del cdigo, son:

    Ventana Inspeccin. Se puede seleccionar una variable de un mdulo de cdigo y arrastrarla a la ventana Inspeccin, de modo que cada

    vez que vare el valor de dicha variable durante la ejecucin del cdigo, el nuevo valor aparecer de forma automtica en esta ventana. Por

    tanto, nuevamente se utilizar a la hora de la depuracin del cdigo.

    Locales. Su funcionamiento es similar al de la ventana Inmediato, con la diferencia de que no es necesario aadir las variables a

    inspeccionar, sino que, de forma predeterminada, aparecen automticamente los valores de todas las variables declaradas en el

    procedimiento actual.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    6 de 64 21/04/2015 17:27

  • Ventana Propiedades. Muestra las propiedades de un control ActiveX, de un UserForm o de un Mdulo de cdigo. Las propiedades puedenaparecer ordenadas de dos formas distintas:

    Alfabticamente.

    Por categoras.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    7 de 64 21/04/2015 17:27

  • 2.3.2. ENTORNO DE PROGRAMACIN EN ACCESS.

    Hay que sealar que, como se ha mencionado antes, el entorno de programacin para Access presenta algunas diferencias, puesto que

    nicamente incluye las ventanas de Mdulo de cdigo, Examinador de objetos y Depuracin (sta ltima engloba las ventanas Inspeccin y

    Locales).

    2.3.3. UTILIZACIN DEL EDITOR DE MACROS DE ACCESS.

    El proceso para crear macros en Access difiere bastante al que se sigue en Word o Excel. Se seguirn los siguientes pasos:

    1. Desde la ventana de la base de datos, seleccionamos la ficha Macros.

    2. Picando en el botn Nuevo, comenzaremos a crear una nueva macro.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    8 de 64 21/04/2015 17:27

  • :3. Aparecer el Editor de macros, con este aspecto y componentes

    Nombre de la macro. Si reunimos varias acciones en una sola, podemos asociar a cada una de ellas un nombre representativo.

    Condicin de ejecucin. Se puede especificar un criterio, de modo que la accin se ejecutar nicamente si ste se cumple. Por defecto, el

    criterio es Verdadero, lo cual significa que la accin siempre se ejecutar al poner en marcha la macro.

    Accin. En este apartado, se ha de especificar la accin que se ha de realizar sobre la base de datos, eligiendo la que se desee de una lista

    desplegable que podemos visualizar, siendo las ms usuales las siguientes:

    AbrirConsulta : abre una sonsulta de seleccin o de referencias cruzadas, o bien ejecuta una consulta de acciones. La consulta

    puede abrirse en el modo Diseo, Hoja de datos o Presentacin preliminar (para ver cmo resultara al imprimir).

    AbrirFormulario : abre un formulario en el modo Formulario, Diseo, Hoja de datos o Presentacin preliminar.

    AbrirInforme : abre un informe en el modo Diseo, Presentacin preliminar, o bien lo imprime directamente.

    AbrirTabla : abre una tabla en el modo Diseo, Hoja de datos o Presentacin preliminar.

    AplicarFiltro : aplica un filtro o consulta a una tabla, formulario o informe, para limitar u ordenar los registros resultantes.

    Bip : se emite un sonido; es til para sealar errores o cambios visuales importantes.

    BuscarRegistro : busca el primer registro que coincide con el criterio especificado; la bsqueda se puede realizar en el formulario

    o en la hoja de datos activa (tabla o consulta).

    BuscarSiguiente : busca el siguiente registro que coincide con los criterios especificados en la accin BuscarRegistro ms

    reciente o en el cuadro de dilogo Buscar.

    Cerrar. Cierra la ventana especificada o la ventana activa en caso de no especificar ninguna. Si el objeto que hay en la ventana

    (tabla,consulta, etc.) no ha sido guardado, aparece el cuadro de dilogo Guardar.

    CuadroMsg : presenta un cuadro de mensaje con una advertencia o informacin.

    EstablecerValor : establece un valor para un control, campo o propiedad de un formulario, hoja de datos o informe.

    Guardar : guarda siempre el objeto especificado o el objeto activo (tabla, consulta, etc.) , en caso de no especificar ninguno, en la

    base de datos en que fue creado.

    IrARegistro : hace que el registro especificado se convierta en el registro activo en un formulario u hoja de datos.

    Salir : sale de Access.

    SeleccionarObjeto : selecciona el objeto especificado de la base de datos.

    Descripcin. Se puede aadir un comentario o informacin descriptiva sobre cada accin.

    Argumentos de accin. Dependiendo de la accin seleccionada, habr que especificar unos determinados argumentos o parmetros para

    la ejecucin de la misma. Por ejemplo, para la accin AbrirTabla, debemos indicar aspectos como el nombre de la tabla a abrir y el modo

    de apertura (Diseo, Hoja de datos, etc.)

    Cuadro de informacin. Muestra un breve comentario sobre la accin seleccionada, el cual nos puede facilitar la tarea de configurar sus

    argumentos.

    4 EL MODELO DE PROGRAMACIN ORIENTADA AOBJETOS

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    9 de 64 21/04/2015 17:27

  • Para realizar mdulos o programas en Visual Basic o VBA (Visual Basic para Aplicaciones), es necesario introducir unos conceptos bsicos

    sobre el tipo o modelo de programacin que se ha de utilizar. En concreto, VBA se basa en el modelo de programacin orientado a objetos, muy

    distinto al modelo tradicional que utilizan lenguajes como Fortran y otros.

    El punto de partida de este modelo se fundamenta en la idea de que el entorno est formado por objetos. En este entorno, que en nuestro caso,

    sera el conjunto de aplicaciones de Office, podemos encontrar:

    Objeto. Entidad significativa existente en el entorno. En general, el entorno se concibe como el conjunto de relaciones entre los distintos

    objetos; adems, cada objeto puede estar compuesto de otros objetos (subobjetos).

    Clase. Conjunto de objetos distintos del mismo tipo.

    Estado. Caractersticas o propiedades de un objeto en un momento dado.

    Comportamiento : Operaciones realizables por el objeto.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    10 de 64 21/04/2015 17:27

  • Por ejemplo, podramos tener un objeto Ascensor, el cual estara formado por los subobjetos Puerta automtica, Cabina, Botn de alarma,

    Botn de parada, Botn a la planta 1, Botn a la planta 2, etc.

    En cuanto a su estado, podramos tener las propiedades Ocupado (con los valores S o No), Tipo de movimiento (Subiendo, Bajando,

    Ninguno), etc.

    Respecto a su comportamiento, podramos tener las operaciones Subir, Bajar, Detenerse, Abrir puerta automtica, etc.

    Por otro lado, se puede observar que los subobjetos Botn de parada, Botn a la planta 1, Botn a la planta 2, etc., formaran parte de una

    clase llamada Botones, ya que cada uno es un objeto distinto pero todos pertenecen a un mismo tipo de objeto.

    4.1 LOS OBJETOS DE MICROSOFT OFFICE.

    Centrndonos en Office y en el lenguaje VBA, tenemos:

    Objeto. Toda entidad de Office funcional, manejable y programable. En Office, prcticamente todo puede concebirse como objeto

    (botones, tablas, consultas, documentos, hojas de clculo, etc.).

    Colecciones. Objetos distintos que son del mismo tipo. Siempre aparecen en plural (Worksheets, Shapes, Workbooks, etc.), y equivaldran

    a lo que hemos llamado Clases. Por ejemplo, Worksheets y Workbooks representan, respectivamente, la coleccin o conjunto de hojas de

    clculo abiertas y de libros abiertos en Excel, Documents representa la coleccin de documentos abiertos en Word, etc.

    Miembros. Conjunto formado por el estado y el comportamiento que se puede aplicar a un objeto concreto. Dentro de este apartado,

    podemos diferenciar dos conceptos:

    Propiedades. Atributos o caractersticas propias de un objeto (tamao, posicin, forma, etc.).

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    11 de 64 21/04/2015 17:27

  • Mtodos. Acciones que pueden realizarse sobre o con un objeto (abrir, cerrar, eliminar, etc.)

    Eventos. Sucesos que tienen lugar en un momento dado, ante los cuales puede responder un objeto (pulsar tecla, pulsar botn derecho del

    ratn, etc.). Por defecto, ante un evento un determinado objeto no proporciona ninguna respuesta, cuya configuracin queda en manos del

    usuario.

    3.2. JERARQUA DE OBJETOS

    Se ha indicado anteriormente que prcticamente todos los objetos pueden subdividirse en otros objetos menores (subobjetos). Esto significa

    que tendremos un cierto orden o jerarqua de objetos, de modo que un objeto de un primer nivel podra dividirse en objetos que lo forman en el

    siguiente nivel.

    Siguiendo el ejemplo del objeto Ascensor, tendramos este diagrama jerrquico:

    Centrndonos en Office, encontramos una serie de niveles jerrquicos, de modo que en un nivel superior, tendramos el objeto aplicacin

    (Application). Esto significa que el objeto mayor al cual podemos hacer referencia es la propia aplicacin con la que estemos trabajando (Excel,

    Access o Word).

    A continuacin, se muestra una posible primera jerarqua de las aplicaciones Excel y Word. En la aplicacin Excel, podemos tener varios libros

    abiertos, y cada uno de ellos puede tener un cierto nmero de hojas de clculo. En cuanto a la aplicacin Word, pueden existir en un momento

    dado una cierta cantidad de documentos abiertos, cada uno de los cuales est formado por diferentes secciones (fragmentos de un documento

    independientes entre s).

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    12 de 64 21/04/2015 17:27

  • 4.2 UTILIZACIN DEL EXAMINADOR DE OBJETOS

    Ya se ha comentado brevemente que una de las ventanas del Editor de Visual Basic es el Examinador de objetos; se trata de un mapa o

    manual de instrucciones donde se puede buscar iinformacin referente a un objeto de Office. A continuacin, se muestran y explican los

    distintos componentes que lo forman.

    Lista desplegable Proyecto-Biblioteca. Disponemos de una Biblioteca de Objetos, que no es ms que un archivo con informacin sobre

    objetos, propiedades, mtodos y enumeraciones. Hay bibliotecas referentes a Excel, a Access, etc. Seleccionaremos la biblioteca donde

    buscar (por defecto, la bsqueda se realiza en ).

    Texto de bsqueda. En este cuadro, introduciremos la expresin sobre la cual buscamos informacin (por ejemplo, la propiedad Name, el

    objeto Workbook, etc.)

    Resultados de la bsqueda. Aparecer, una vez seleccionada una biblioteca y un texto de bsqueda, una lista de bibliotecas menores,

    clases o miembros que cumplen el criterio de bsqueda. Los resultados se dividen en tres apartados.

    Biblioteca. Biblioteca donde se ha encontrado informacin.

    Clase. Clase sobre la que se ha encontrado informacin.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    13 de 64 21/04/2015 17:27

  • Miembro. Miembro que cumple el criterio de bsqueda especificado.

    Clases. Se muestran todos los objetos que existen en una biblioteca determinada.

    Lista de miembros. Aparece una lista con las Propiedades, mtodos y enumeraciones que admite el elemento seleccionado de la lista

    Clases.

    Detalles. Se nos muestra informacin detallada sobre el miembro seleccionado de la Lista de miembros.

    En el apartado Lista de miembros hemos nombrado un concepto que conviene explicar antes de pasar a la escritura de programas en Visual

    Basic. Se trata de las enumeraciones.

    Una enumeracin es una lista finita de constantes enteras exclusivas, con un valor dentro de un rango predeterminado por Office. Esas

    constantes sirven para definir las propiedades de los objetos, sin tener que recordar los valores concretos. Por ejemplo, el tipo de letra negrita

    podra estar indicado por Word, como la constante de enumeracin wdBold, que correspondera a un cierto valor entero que no hemos de

    recordar. De este modo podramos poner un prrafo del documento en negrita escribiendo: Document.Section.font = wdBold

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    14 de 64 21/04/2015 17:27

  • Las constantes de enumeracin comienza con distintos prefijos dependiendo de la aplicacin para la cual sean tiles. As, en Word comienzan

    por wd, mientras que en Access comienzan por ac y en Excel por xl. Las constantes generales de Visual Basic comienzan por vb, y las que pueden

    ser utilizadas en cualquier aplicacin de Office, por mso.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    15 de 64 21/04/2015 17:27

  • 5 EL MDULO DE CDIGO

    En la ventana de Mdulo de cdigo escribiremos los programas o mdulos necesarios. Estos mdulos podrn ser de dos tipos:

    Sub : procedimiento o rutina que no devuelve ningn valor; las lneas de cdigo que incluye realizan alguna accin, pero no devuelven o

    retornan ningn valor; el cdigo de un Sub va incluido entre estas dos lneas:

    Sub

    ...

    End Sub

    Function : a diferencia de los mdulos Sub, las funciones realizan un cierto clculo y retornan o devuelven un valor que puede ser utilizado en

    otros mdulos; el cdigo de una funcin est incluido entre estas dos lneas:

    Function

    ...

    EndFunction

    En el Mdulo de Cdigo, indicaremos, en la parte superior, con que objeto vamos a trabajar y cul va a ser el procedimiento o evento a definir.

    En el rea de trabajo de la ventana, escribiremos las lneas de cdigo que definirn el procedimiento.

    Para hacer que las distintas ventanas del Editor de VBA aparezcan o desaparezcan, tenemos el men Ver.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    16 de 64 21/04/2015 17:27

  • 5.1 AYUDAS A LA HORA DE ESCRIBIR EL CDIGO

    Llegado el momento de escribir un mdulo de cdigo, disponemos de una serie de ayudas que sern de gran utilidad. Estas ayudas se pueden

    activar o desactivar a voluntad mediante la opcin de men Herramientas-Opciones-Editor del Editor de VBA.

    Las ayudas de las que disponemos son las siguientes:

    Lista de miembros automtica. Al escribir tras el nombre de un objeto vlido un punto, aparecer una lista con los miembros que podemos

    aplicar al objeto.

    Informacin rpida automtica. Se utiliza para conocer los parmetros de un mtodo; entendiendo que cada mtodo es una funcin con

    una serie de argumentos o parmetros, tras escribir el nombre del mismo y pulsar la barra espaciadora, aparecer la lista de sus argumentos

    (los argumentos opcionales aparecen entre corchetes: [ ] ).

    Sugerencia de datos automtica. Como se ver a continuacin, en VBA se pueden utilizar variables y constantes; al definir estos

    elementos, a cada uno de ellos se le ha de asignar un tipo de dato; no es necesario memorizarlos, sino que, cuando sea necesario declarar

    una variable o constante, aparecer una lista con los tipos de datos disponibles en VBA.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    17 de 64 21/04/2015 17:27

  • 6 TIPOS DE DATOS

    Los mdulos de cdigo constan, fundamentalmente, de tres partes:

    Declaraciones de constantes. Una constante es internamente una zona de memoria donde el ordenador almacena de forma fija un dato,

    mientras dure la ejecucin del mdulo o programa que la contiene.

    Declaraciones de variables. Una variable es, internamente, una zona dememoria para el almacenamiento temporal de datos que se utilizan

    en los programas.

    Instrucciones. Realizan las acciones propiamente dichas.

    Respecto a las constantes y variables, stas han de poseer un determinado tipo, es decir, cada una puede almacenar datos que se encuentran en

    determinados intervalos de valores. Los tipos de datos ms usuales en VBAy los intervalos de valores correspondientes se muestran en esta tabla:

    Tipo de Datos ms usuales Intervalo de valores

    Byte 0 a 255

    Integer (Entero) -32.768 a 32.767

    Long (Entero largo) -2109 a 2109

    Single (Real en coma flotante de precisin

    sencilla)

    Negativos: -3,41038 a -1,410-45

    Positivos: 1,410-45 a 3,41038

    Double (Real en coma flotante de doble

    precisin)

    Negativos: -1,810308 a 4,910-324

    Positivos: 4,910-324 a 1,810308

    Boolean (Booleano o Lgico) True (Verdad) o False (Falso)

    Object (Objeto) Objeto de Office.

    String (Cadena de caracteres) De 1 a 65.400 caracteres

    Variant Cualquier valor

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    18 de 64 21/04/2015 17:27

  • 6.1 DECLARACIN DE VARIABLES Y CONSTANTES

    Por declaracin de variables entendemos la indicacin al mdulo o programa de que se va a hacer uso de tales variables. En VBA, no es

    necesario declarar variables, es decir, podemos ir aadiendo variables en el cdigo segn sea necesario; sin embargo, s que resulta muy

    conveniente la declaracin por una serie de razones:

    Facilita la legilibilidad y comprensin del cdigo.

    Ayuda a detectar errores en la escritura del cdigo.

    Aumenta la velocidad de ejecucin de los programas.

    Si no se declara una variable o constante, se supone que es de tipo Variant, lo cual conlleva una serie de inconvenientes:

    Se puede llegar a desaprovechar mucha memoria para datos sencillos (enteros, byte ...). Mientras que una variable de tipo byte utiliza slo 8

    celdillas de memoria, una variable variant utiliza 128 celdillas.

    La ejecucin de los programas es ms lenta, pues no se sabe de antemano el dato que contendr una variable.

    6.2 DECLARACIN DE VARIABLES

    Existe en VBA dos formas de declarar las variables:

    Declaracin implcita. Este tipo no se puede considerar formalmente una declaracin. Consiste en utilizar la variable directamente, sin

    indicar su tipo. Por tanto, al no indicar un tipo concreto, se supone tipo Variant.

    Ejemplos:

    vMiVariable = Cadena de prueba

    vAprobados = 12

    Declaracin explcita. Se indica la existencia de una variable antes de su uso, indicando adems el tipo de datos que posee. Utilizaremos para

    ello las palab Dim y As. Si no se indica ningn tipo de datos, se supone que la variable es de tipo Variant.

    Ejemplos:

    Dim vUnaVariable

    Dim sgNotaMedia As Single

    Dim sTexto As String

    Dim vMalaVariable As Variant

    El tipo Variant ser til cuando no sepamos de antemano qu es lo que se va a almacenar en la variable. Por ejemplo, si esperamos que el

    usuario escriba el valor de una variable sin saber si va a ser un texto o un nmero, podremos utilizar este tipo de datos con ventaja.

    6.3 REGLAS PARA PONER NOMBRES A LAS VARIABLES

    A la hora de poner nombre a las variables, existen unas reglas. Unas son obligatorias, y otras no, aunque s son recomendables:

    Obligatorias.

    El nombre ha de comenzar por un carcter alfabtico.

    No puede tener ms de 255 caracteres.

    No puede contener operadores matemticos ni signos de puntuacin.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    19 de 64 21/04/2015 17:27

  • No puede corresponder a una palabra clave.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    20 de 64 21/04/2015 17:27

  • Recomendable: Se pueden utilizar prefijos para recordar fcilmente el tipo de datos de las variables.

    Boolean: b Single: sg String : st

    Byte: by Variant : v Integer: i

    Long: Object: o Double: d

    6.4 DECLARACIN DE CONSTANTES

    En el caso de las constantes, slo es posible la declaracin explcita, es decir, se indica la existencia de la constante siempre antes de su uso.

    Para ello, utilizamos las palabras reservadas Const y As. Si no se indica un tipo de datos, se supone que la constante es de tipo Variant.

    Puesto que una constante representa un valor que no vara, en la propia declaracin se ha de indicar cul es ese valor.

    6.5 REGLAS PARA PONER NOMBRES A LAS CONSTANTES

    La normativa que se utiliza para poner nombre a las constantes es la misma que en el caso de las variables, tanto en el apartado obligatorio

    como en el recomendable.

    Ejemplos:

    Const vUnaVariable As Variant = 6.5

    Const sCiudad As String = Santa Cruz de Tenerife

    Const vNumeroPi = 3.141592

    Const byNumero As Byte = 8

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    21 de 64 21/04/2015 17:27

  • 6.6 ALCANCE O MBITO DE LAS VARIABLES

    Una vez visto el modo de declaracin y uso de las variables y constantes, es preciso definir lo que se denomina alcance o mbito: se trata del

    campo de actuacin o disponibilidad de una variable, constante o procedimiento.

    Veremos a continuacin que, dependiendo del nivel en el cual fue declarada una variable o constante, stas podrn utilizarse en mayor o menor

    medida. Existen tres niveles de declaracin:

    Nivel de procedimiento.

    Las variables de este nivel, a las que tambin se llama locales, se declaran al principio de un procedimiento (Sub o Function). Dichas

    variables o constantes slo estarn disponibles dentro de dicho procedimiento.

    Nivel de mdulo.

    Las variables se declaran en la seccin de declaraciones de la ventana de Mdulo de Cdigo (es decir, en la parte superior de dicha

    ventana y antes de escribir cualquier procedimiento). Tales variables o constantes estarn disponibles para todos los procedimientos que se

    incluyan en el Mdulo de cdigo.

    Nivel Pblico.

    Las variables se declaran, al igual que las variables de Nivel de mdulo, en la seccin de declaraciones (parte superior del Mdulo de

    cdigo). Sin embargo, a cada declaracin se antepone la palabra reservada Public en lugar de Dim. Como resultado, las variables pblicas o

    globales estarn disponibles para todos los procedimientos de todos los mdulos de cdigo del programa.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    22 de 64 21/04/2015 17:27

  • En la siguiente figura se pueden observar ejemplos de declaraciones en los distintos niveles.

    Al igual que exista, a la hora de poner nombres a las variables, la recomendacin de utilizar un prefijo para identificar en cualquier momento

    el tipo de datos de las mismas, tambin resulta recomendable anteponer nuevos prefijos a los anteriores, con el fin de saber en todo instante cul

    es el mbito de cada una de las variables o constantes. Estos prefijos, como se puede observar en la figura anterior, son:

    Para las variables locales: ninguno.

    Para las variables del Nivel de mdulo : m_

    Para las variables del Nivel Pblico (globales) : g_

    7 CONTROL DEL ORDEN DE EJECUCIN

    A la hora de ejecutarse un programa o procedimiento, es decir, ponerse en funcionamiento, el orden que se sigue es normalmente secuencial,

    es decir, se van realizando las distintas instrucciones en funcin del orden en que aparecen.

    En ocasiones, sin embargo, es necesario modificar el orden de ejecucin descrito con anterioridad, es decir, se ha de modificar el orden de

    ejecucin de las instrucciones. De este modo, hay dos tipos principales de sentencias de control del orden de ejecucin:

    De seleccin (condicionales).

    De repeticin (bucles).

    7.1 SENTENCIAS DE SELECCIN

    Este tipo de sentencias nos permiten ejecutar distintas acciones en funcin de ciertos criterios o condiciones que especifiquemos a voluntad.

    Para establecer esas condiciones, disponemos de los llamados operadores relacionales:

    = (Igual )

    (Distinto)

    >= (Mayor o igual)

    =< (Menor o igual)

    > (Mayor)

    < (Menor)

    A continuacin, describiremos las estructuras de seleccin ms usuales en VBA, incluyendo algn ejemplo ilustrativo.

    Estructura If-Then-EndIf (Si-Entonces-Fin Si)

    Utilizando esta estructura, si se cumple la condicin indicada tras la palabra If se ejecutar el conjunto de acciones que aparezca antes de la

    palabra EndId. Veamos un ejemplo:

    Sub Condicion1()

    Dim vEntrada As Variant

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    23 de 64 21/04/2015 17:27

  • vEntrada = InputBox (Escribe un nmero mayor que 10)

    If vEntrada < 10 Then

    MsgBox Error: Has escrito un nmero menor que 10

    EndIf

    MsgBox El nmero escrito ha sido: & vEntrada

    End Sub

    Estructura If-Then-Else-EndIf (Si-Entonces-Si No-Fin Si)

    Si se cumple la condicin especificada tras If, se realiza la serie de acciones comprendidas antes de Else. En caso contrario, es decir si no se

    cumple, se realiza la serie de acciones comprendidas entre Else y EndIf. He aqu un ejemplo:

    Sub Condicion2()

    Dim vEntrada As Variant

    vEntrada = InputBox (Escribe un nmero mayor que 10)

    If vEntrada < 10 Then

    MsgBox Error: Has escrito un nmero menor que 10

    Else

    MsgBox El nmero escrito ha sido: & vEntrada

    EndIf

    End Sub

    Estructura If-Then-ElseIf-EndIf (Si-Entonces-Si No, Si-Fin Si)

    Esta estructura nos permite evaluar ms de una condicin dentro de un mismo bloque de seleccin. Cada instruccin ElseIf (podemos

    tener tantos como necesitemos) representa una nueva condicin. Tambin se puede incluir como ltima condicin la palabra Else que, de

    nuevo, indicar lo que se ha de hacer en caso de que la ltima condicin que se indique sea falsa. Observmoslo en el siguiente ejemplo:

    Sub Condicion3()

    Dim vEntrada As Variant

    vEntrada = InputBox (Escribe un nmero mayor que 10)

    If vEntrada < 10 Then

    MsgBox Error: Has escrito un nmero menor que 10

    ElseIf vEntrada = 10 Then

    MsgBox Error: Has escrito el nmero 10

    Else

    MsgBox El nmero escrito ha sido: & vEntrada

    EndIf

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    24 de 64 21/04/2015 17:27

  • Estructura Select Case-Case Is-End Select (Seleccionar Caso)

    Esta estructura es mucho ms flexible que las anteriores. Permite mltiples selecciones, incluso entre una serie de valores no exclusivas.

    Cada instruccin Case representa una posible condicin, mientras que con CaseElse se indica la accin a realizar si se da cualquier otro caso

    distinto de los indicados con anterioridad. El siguiente ejemplo ilustra de forma bastante clara la forma de utilizar esta estructura:

    Sub SeleccionarCadaCaso()

    Dim iEntrada As Integer

    iEntrada = InputBox(Pon tu dato)

    Select Case iEntrada

    Case 1, 3, 5, 7, 9

    MsgBox Es un impar menor que 10

    Case 9, 10

    MsgBox Es el nmero 9 el 10

    Case Is > 10

    MsgBox Es un nmero mayor que 10

    CaseElse

    MsgBox Qu nmero tan extrao...!

    End Select

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    25 de 64 21/04/2015 17:27

  • 7.2 SENTENCIAS DE REPETICIN (BUCLES)

    Las sentencias de repeticin, tambin denominadas bucles, permiten realizar una misma serie de acciones varias veces. Resulta obvio que

    habr que especificar alguna condicin para que las acciones vuelvan a ejecutarse (condicin de continuacin) o bien para que contine la

    ejecucin en la accin posterior (condicin de terminacin); en caso de que esto no se indique claramente, podra ocurrir que tal serie de acciones

    se ejecutase infinitamente, lo cual se denomina bucle infinito.

    Existen cuatro tipos fundamentales de sentencias de repeticin o bucles, que se detallan a continuacin:

    Estructura Do-Loop-Until (Hacer-Volver a iniciar bucle-Hasta)

    Con esta estructura hacemos que se ejecuten las instrucciones incluidas entre Do y Loop hasta que se cumpla una cierta condicin indicada

    tras la palabra Until. He aqu un ejemplo ilustrativo:

    Sub Bucle1()

    Dim iNumero As Integer

    Do

    iNumero = InputBox (Escribe un nmero; 1 para acabar)

    MsgBox Has escrito el nmero & iNumero

    Loop Until iNumero = 1

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    26 de 64 21/04/2015 17:27

  • Estructura Do-Loop-While (Hacer-Volver a iniciar bucle-Mientras)

    Utilizando esta estructura, se ejecutan las instrucciones incluidas entre Do y Loop mientras se cumpla una cierta condicin indicada tras la

    palabra While. La condicin ya no es de terminacin del bucle, sino de continuacin en el mismo. En el siguiente ejemplo podemos observarlo:

    Sub Bucle2()

    Dim iNumero As Integer

    Do

    iNumero = InputBox (Escribe un nmero; 1 para acabar)

    MsgBox Has escrito el nmero & iNumero

    Loop While iNumero 1

    End Sub

    Estructura While-Wend (Mientras-FinMientras)

    Se trata de una estructura muy parecida al bucle Do-Loop-While. La diferencia radica en que la condicin de continuacin en el bucle se

    evala al principio del mismo. Por tanto, tambin difieren en el nmero mnimo de iteraciones que se van a realizar. Veamos el siguiente

    ejemplo:

    Sub Bucle3()

    Dim iNumero As Integer

    While iNumero 1

    iNumero = InputBox (Escribe un nmero; 1 para acabar)

    MsgBox Has escrito el nmero & iNumero

    Wend

    End Sub

    Estructura For-Next (Para-Siguiente)

    Representa la instruccin de repeticin ms potente y flexible. Con ella, se consigue repetir las acciones incluidas entre las palabras For y

    Next. Se incluir en esta estructura una variable de tipo Integer que se va incrementando de forma automtica; dicha variable tendr un valor

    inicial y otro final; en la primera iteracin, la variable toma el valor inicial, mientras que en las siguientes, se incrementa, automticamente

    como ya se ha indicado, el valor de dicha variable. Los incrementos pueden ser negativos o superiores a la unidad (para indicarlo, se utilizar

    la palabra reservada Step); en la ltima iteracin, la variable toma el valor final.

    Sub BucleFor()

    Dim iBucle As Integer

    For iBucle = 1 To 5

    MsgBox El valor de la variable de bucle es & iBucle

    Next

    MsgBox El valor final de la variable de bucle es & iBucle

    End Sub

    Hemos de aadir algunas observaciones con respecto a las distintas estructuras de repeticion explicadas anteriormente:

    En ciertos casos, puede resultar til, desde el mismo interior de un bucle, indicar una condicin prematura de terminacin; esto se realiza

    utilizando la instrucciones Exit Do (para los bucles Do-Loop) o Exit For (para los bucles For-Next).

    Los bucles Do-Loop pueden incluir las condiciones Until o While tras la palabra Do, y no tras Loop. En ese caso, la condicin se evala por

    primera vez antes de entrar en el bucle (en el caso de Loop While, el funcionamiento sera, por tanto, anlogo al bucle While-Wend).

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    27 de 64 21/04/2015 17:27

  • En ocasiones, la variable entera que se utiliza en un bucle For-Next puede ser sustituida por otra expresin ms compleja. Esto se utiliza

    normalmente para recorrer los distintos objetos que forman parte de otro objeto mayor o de una coleccin. Para obtener este funcionamiento,

    se han de utilizar las palabras reservadas For Each-In (Para cada-en). Observemos este ejemplo:

    Sub ParrafosDeWord()

    Dim oParrafoWord As Object

    For Each oParrafoWord In ActiveDocument.Range.Paragraphs

    MsgBox oParrafoWord

    Next oParrafoWord

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    28 de 64 21/04/2015 17:27

  • 8 DEPURACIN DEL CDIGO

    Por depuracin del cdigo entendemos la localizacin de los problemas contenidos en la lgica del mismo, es decir, tanto en los valores que las

    variables van adquiriendo como en las distintas acciones que se van ejecutando.

    A continuacin, se estudiarn distintas herramientas para depurar cualquier programa o procedimiento, ampliando la informacin ya facilitada

    sobre algunas de las ventanas que pueden aparecer en el entorno del Editor de Visual Basic. Ahora bien, recordemos que En Access slo existen

    las ventanas Locales e Inspeccin.

    8.1 PUNTOS DE INTERRUPCIN (BREAKPOINTS)

    En ocasiones, puede interesar poner en ejecucin un programa e interrumpirlo en una lnea especfica. Esto es posible mediante los llamados

    puntos de interrupcin (breakpoints), que se adjuntan a la lnea especfica en la cual se desea detener la ejecucin. De este modo, cuando el curso

    de ejecucin del programa llegue a la lnea, ste se detendr, es decir, la lnea con punto de interrupcin quedar pendiente y sin ejecutar; en ese

    momento, la aplicacin de Office donde se ha creado el mdulo de Modo Ejecucin a Modo Interrupcin.

    Tras la interrupcin, se podr las siguientes acciones:

    evaluar las variables que estn siendo utilizadas

    ver el curso exacto de ejecucin del cdigo, es decir, la secuencia de acciones que se realizan

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    29 de 64 21/04/2015 17:27

  • 8.1.1 INSERCIN DE PUNTOS DE INTERRUPCIN EN EL CDIGO

    Podemos insertar puntos de interrupcin en una determinada lnea de tres formas distintas:

    situar el cursor sobre la lnea deseada y pulsar F9

    picar en Depuracin-Alternar punto de interrupcin

    picar en la barra que aparece en la parte izquierda de la ventana de Mdulo de Cdigo.

    El resultado obtenido tras alguno de los pasos anteriores es la aparicin de un punto en la barra izquierda de la ventana del Mdulo de Cdigo,

    junto a la lnea donde se dese detener la interrupcin, la cual aparece resaltada en color pardo. Esto se puede observar en la figura siguiente:

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    30 de 64 21/04/2015 17:27

  • 8.1.2 ELIMINAR PUNTOS DE INTERRUPCIN

    Para eliminar el punto de interrupcin colocado en una lnea, podemos escoger alguno de los pasos siguientes:

    Pulsar F9 tras poner el cursor en la lnea marcada.

    Picar en Depuracin-Alternar punto de interrupcin tras poner el cursor en la lnea marcada.

    Pulsar en el punto de insercin que ha aparecido en la barra izquierda junto a la lnea.

    Pulsar en Depuracin-Borrar todos los puntos de interrupcin; esto eliminar cualquier punto de insercin del cdigo.

    8.1.3 MODO INTERRUPCIN

    Una vez que hemos entrado en el Modo Interrupcin, y con el programa detenido, aparece sealada la lnea por la cual ha quedado interrumpido,

    como vemos en la siguiente figura:

    A partir de ese momento, podremos realizar distintas acciones:

    inspeccionar los valores de las variables

    seguir el curso del programa paso a paso (es decir, lnea a lnea) mediante F8; la lnea que se vaya a ejecutar en cada momento aparecer

    sealada por la flecha de la izquierda

    seguir con la ejecucin normal del programa mediante F5

    detener la ejecucin del programa mediante Ejecutar-Restablecer o el botn correspondiente de la barra de herramientas

    8.1.4 CUADRO DE SUGERENCIA DE DATOS

    Este cuadro de informacin se pondr en funcionamiento slo cuando entremos en Modo Interrupcin (para activarlo o desactivarlo,

    recurriremos a Herramientas-Opciones-Editor).

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    31 de 64 21/04/2015 17:27

  • El funcionamiento del cuadro es el siguiente: al colocar el puntero de ratn sobre alguna variable o propiedad, aparece en un pequeo recuadro su

    valor en el momento actual, es decir, en el instante en que la ejecucin est detenida. Vemoslo en la figura siguiente:

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    32 de 64 21/04/2015 17:27

  • 7.1.5. AADIR VARIABLES A LA VENTANA INSPECCIN

    En la ventana Inspeccin, de la cual ya se habl anteriormente, se pueden estudiar variables; el valor de cada variable que aparezca en esta

    ventana se actualizar automticamente, segn avance la ejecucin del programa (para activar o desactivar esta ventana, podemos seleccionar

    Ver-Ventana Inspeccin).

    Para aadir una variable que se desea estudiar en la ventana Inspeccin, realizaremos esta secuencia de operaciones:

    picar dos veces sobre la variable, o bien seleccionarla arrastrando con el ratn

    arrastrar la variable seleccionada a la ventana Inspeccin (o picar en Depuracin-Agregar Inspeccin).

    Al realizar estas operaciones, por ejemplo, sobre la variable iCuantasPalabras, podramos obtener algo semejante a la siguiente figura:

    Se observa que existen cuatro columnas o campos en la ventana Inspeccin, de modo que el significado de cada uno de ellos es el siguiente:

    Expresin. Variable o combinacin de las mismas que se desea inspeccionar.

    Valor. Valor de Expresin en el momento actual; en ocasiones, tendremos como valor (es decir, variable no

    utilizada).

    Tipo. Tipo de datos de la variable o expresin; en ocasiones, tendremos el valor Empty (es decir, variable no declarada).

    Contexto. mbito de las variables; normalmente, se mostrar el Mdulo y Procedimiento donde se ha declarado la variable.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    33 de 64 21/04/2015 17:27

  • 7.1.6. UTILIZACIN DE LA VENTANA LOCALES PARA LA DEPURACIN

    La estructura y el contenido de la ventana Locales son muy similares a los de la ventana Inspeccin (para activar la ventana Locales,

    seleccionaremos Ver-Ventana Locales). Sin embargo, existen algunas diferencias notables:

    no aparece la columna Contexto, que s tenamos en la ventana Inspeccin

    aparecen los valores de todas las variables del procedimiento actual, y no slo de las que se explcitamente se indiquen

    habr que ejecutar el procedimiento para observar las variables, es decir, antes de la ejecucin no aparece ninguna de ellas

    El aspecto de la ventana Inspeccin, en un momento dado, podra ser el que se muestra e la figura siguiente; el signo + indica que al pulsarlo se

    pueden ver los valores de todas las variables o propiedades contenidas en el objeto que aparece a su derecha.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    34 de 64 21/04/2015 17:27

  • 7.1.7. UTILIZACIN DE LA VENTANA INMEDIATO PARA LA DEPURACIN

    La ventana Inmediato tiene dos usos principales:

    imprimir el valor de una expresin, constante o variable determinada; para ello, se escribir la instruccin Debug.Print , seguida de la

    variable a imprimir, en la ventana del Mdulo de cdigo.

    ejecutar una lnea de cdigo, obteniendo el resultado de forma inmediata.

    9 COMUNICACIN ENTRE PROCEDIMIENTOS YFUNCIONES

    En los distintos mdulos de Visual Basic que se creen, unos procedimientos pueden invocar a otros, es decir, pueden hacer referencia a otros

    procedimientos Sub o Function, de modo que se ejecutarn las acciones que contenga el procedimiento invocado.

    Por defecto, los procedimientos se declaran a nivel Public, es decir, que podrn estar en la misma ventana de mdulo que el procedimiento

    llamador o en otra distinta.

    Para realizar una llamada a un procedimiento, simplemente se indica su nombre como una instruccin ms. En caso de que el procedimiento seauna Function, se puede tomar como segundo miembro de una asignacin.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    35 de 64 21/04/2015 17:27

  • Veamos en un ejemplo el funcionamiento de las llamadas a procedimientos.

    Function sgAreaCircunferencia(ByVal sgArgRadio As Single) As Single

    sgAreaCircunferencia = 3.14159 * sgArgRadio ^2

    End Function

    Sub EscribirResultado(ByVal sgArgumentoArea As Single)

    9.1.1.1.1.1.1 MsgBox "El rea de la circunferencia es " & sgArgumentoArea

    9.1.1.1.1.1.2 End Sub

    Sub ProcedimientoPrincipal()

    Dim sgRadio As Single

    Dim sgArea As Single

    sgRadio = InputBox("Escribe el radio de la circunferencia")

    sgArea = sgAreaCircunferencia(sgRadio)

    EscribirResultado (sgArea)

    9.1.1.1.1.2 End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    36 de 64 21/04/2015 17:27

  • 10 OBJETOS DE EXCEL

    Podemos ver a continuacin un resumen de la jerarqua de los objetos ms importantes de los que disponemos en Excel. Por supuesto, haymuchos otros, pero, adems de resultar prcticamente imposible dominarlos todos, conviene utilizar nicamente ciertos objetos que nosproporcionan toda la funcionalidad que necesitamos a la hora de escribir nuestros mdulos VBA.

    Estudiemos a continuacin cada uno de los objetos/colecciones:

    10.1 OBJETO APPLICATION

    Este objeto representa la propia aplicacin de Office en la que estemos trabajando. Por tanto, va a existir en cualquier otra aplicacin (Word,

    Access).

    Es el objeto de nivel ms alto y, en general, se podr omitir su especificacin en el cdigo. Veamos un ejemplo:

    Sub Acabar() Sub Acabar()

    Application.Quit Quit

    End Sub End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    37 de 64 21/04/2015 17:27

  • 9.2. COLECCIN WINDOW (WINDOWS).

    Esta coleccin de objetos representa todas las ventanas que hay abiertas en un momento dado en Excel. Observemos algunos ejemplos:

    Sub Contar ()

    MsgBox Application.Windows.Count

    End Sub

    Sub Cerrar()

    Application.Windows(3).Close

    End Sub

    9.3. COLECCIN WORKBOOK (WORKBOOKS)

    Esta coleccin representa el conjunto de libros abiertos en un momento dado en Excel. Veamos algunos mtodos tiles relacionados con estos

    objetos:

    Open. Abre un libro, indicando su nombre y, opcionalmente, su ubicacin. Observemos un ejemplo:

    Sub AbrirLibro()

    Dim oMilibro As Object

    Set oMilibro = Workbooks.Open (filename:=C:\AIA\Notas.xls)

    End Sub

    Activate. Activa el libro que se le indique de los que estn abiertos; la especificacin del libro se podr hacer por su nombre o por su

    ndice de orden de apertura (antigedad). Veamos algunos ejemplos:

    Sub ActivandoPorNombre()

    Workbooks("Aleatorios.xls").Activate

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    38 de 64 21/04/2015 17:27

  • Sub ActivandoPorOrden()

    Workbooks(3).Activate

    End Sub

    Add. Crea un libro nuevo en la aplicacin, en principio sin nombre. Veamos un ejemplo:

    Sub AadirLibro()

    Dim oMilibro As Object

    Set oMiLibro = Workbooks.Add

    EndSub

    SaveAs. Almacena un libro con el nombre que le indiquemos. Observemos el ejemplo:

    Sub AadirGuardar()

    Dim oMiLibro As Object

    Set oMiLibro=WorkBooks.Add

    oMiLibro.ActiveSheet.Range(A1:A100).Value = =rand()*20

    oMiLibro.SaveAs filename:=C:\Pruebas\Aleatorios.xls

    End Sub

    Close. Cierra un libro, con opcin a guardar los cambios. Obsrvese el ejemplo:

    Sub CerrarLibroGuardar()

    Dim oMilibro As Object

    Set oMilibro = Workbooks.Open (FileName:=C:\AIA\Notas.xls)

    oMiLibro.ActiveSheet.Range(L3).Value=9.5

    oMiLibro.Close savechanges := True

    End Sub

    Existen dos mtodos relacionados con la apertura y cierre de libros; estos mtodos son Application.GetOpenFilename y

    Application.GetSaveAsFilename. Se pueden utilizar en cualquier aplicacin de Office. Abren los cuadros de dilogo de Abrir y Guardar como,

    respectivamente, pero no realizan tales acciones, sino que devuelven una cadena de caracteres, con el nombre indicado por el usuario, la cual ha

    de usarse con el mtodo Save.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    39 de 64 21/04/2015 17:27

  • 10.2 Pseudoobjeto ActiveWorkbook.

    Mediante el pseudoobjeto ActiveWorkbook hacemos referencia al libro que est activo en un momento dado en Excel. Como realmente se

    trata de un objeto Workbook, al pseudoobjeto ActiveWorkbook se le pueden aplicar los mismos mtodos que a aquel.

    Existe una diferencia obvia entre el objeto Workbook y el pseudoobjeto ActiveWorkbook, y es que mientras que se pueden tener varios objetos

    Workbook en un momento dado en Excel, slo tendremos un objeto ActiveWorkbook.

    10.3 Coleccin WorkSheet (Worksheets)

    La coleccin de objetos Worksheet representa el conjunto de hojas de clculo existentes en un libro determinado. Veamos tres ejemplos

    sencillos:

    Sub ContarHojas()

    MsgBox ActiveWorkbook.Worksheets.Count

    End Sub

    Sub VerValor()

    MsgBox Worksheets(1).Range(A1).Value

    End Sub

    Sub VerValor2()

    MsgBox Worksheets(Hoja2).Range(A1).Value

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    40 de 64 21/04/2015 17:27

  • Estudiemos a continuacin algunos mtodos y propiedades tiles aplicables a estos objetos:

    Cells. Permite hacer referencia a una celda concreta de la hoja, como se observa en el ejemplo:

    Sub VerValorCelda()

    MsgBox Worksheets(1).Cells(3,2).Value

    End Sub

    UsedRange. Nos permite hacer referencia al conjunto de celdas no vacas que existen en la hoja de clculo, es decir, el rea

    rectangular de la hoja de clculo que engloba a todas y cada una de las celdas en las cuales existe algn valor. Observemos este ejemplo, en

    el que suponemos que la hoja de clculo Hoja3 slo contiene estos valores, y cuyo resultado sera 6.3.

    A B C

    1

    2 3.5 6.3

    3 2

    4 2.9 7.25

    Sub VerValor3()

    MsgBox Worksheets(Hoja3).UsedRange.Cells(1,3).Value

    End Sub

    Activate. Activa la celda que se le indique, mediante dos formas distintas de parametrizacin, segn vemos en estos ejemplos:

    Sub ActivarHojaPorIndice()

    ActiveWorkBook.Worksheets(2).Activate

    End Sub

    Sub ActivarHojaPorNombre()

    ActiveWorkBook.Worksheets(Hoja3).Activate

    End Sub

    Add. Permite aadir una nueva hoja de clculo a un libro, justo delante de la hoja activa.

    Sub AadirHoja()

    Workbooks(3).Activate

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    41 de 64 21/04/2015 17:27

  • ActiveWorkbook.Worksheets.Add

    End Sub

    Delete. Elimina la hoja que se indique de un libro. Veamos un ejemplo:

    Sub EliminarHoja()

    Workbooks(3).Activate

    ActiveWorkbook.Worksheets(Hoja4).Delete

    End Sub

    Printout. Imprime una hoja de clculo, como se puede observar en este ejemplo:

    Sub AadirHoja()

    Workbooks(NotasAIA).Activate

    ActiveWorkbook.Worksheets(Hoja1).Printout

    End Sub

    Copy. Crea un libro nuevo y copia en l la hoja indicada; el nuevo libro slo contendr esa hoja.

    Sub CopiarHoja()

    Workbooks(NotasAIA).Activate

    ActiveWorkbook.Worksheets(Hoja1).Copy

    End Sub

    10.4 Objeto Range.

    El objeto Range representa un conjunto de celdas dentro de un libro; este conjunto normalmente ser un rea rectangular, aunque tambin

    puede hacer referencia a una solo celda, mltiples reas rectangulares, etc. Veamos algunos ejemplos sencillos:

    Sub PonerUnValor()

    Dim NuevaHoja As Object

    Set NuevaHoja=Worksheets.Add

    NuevaHoja.Range(C3).Value = 6

    End Sub

    Sub VariasCeldas

    ActiveWorkbook.Worksheets(2).Range(A1:C3)= 7

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    42 de 64 21/04/2015 17:27

  • A continuacin, se muestran algunos mtodos y propiedades tiles de este objeto:

    ClearContents. Borra el contenido de las celdas del objeto Range especificado.

    Sub Borrar()

    Range(A1, E3).ClearContents

    End Sub

    Cells. Hace referencia a una celda concreta dentro del rango, indicando la fila y la columna. El siguiente ejemplo asigna el valor 1 a la

    celda C5 de la hoja Hoja3 del libro activo.

    Sub ValorEnCelda()

    Worksheets(Hoja3).Range(B3:E7)Cells(3,2)= 1

    End Sub

    CurrentRegion. Hace referencia a un conjunto de celdas limitado por celdas vacas o los bordes de la hoja. Obsrvese la diferenciacon el mtodo UsedRange del objeto Worksheet. En general, el mtodo CurrentRegion no englobar todas las celdas no vacas, salvo en elcaso en que entre ellas no haya ninguna fila o columna vaca. Veamos a continuacin dos ejemplos de utilizacin de este mtodo; en elsegundo de ellos, contamos los nmeros negativos que existen en la columna A, sin saber en qu fila hemos de acabar de inspeccionar.

    Sub BorrarRangoDesconocido()

    Worksheets(2).Range("A1").CurrentRegion.ClearContents

    End Sub

    Sub ContarNegativos()

    Dim oCelda As Object

    Dim iNegativo As Integer

    For Each oCelda InWorksheets(2).Range("A1").CurrentRegion

    If oCelda.Value < 0 Then

    iNegativo = iNegativo + 1

    End If

    Next

    MsgBox El total de negativos es & iNegativo

    End Sub

    Columns. Hace referencia a una columna de un rango. El siguiente ejemplo modifica el contenido de todas las celdas de la columna C que

    pertenecen al rango.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    43 de 64 21/04/2015 17:27

  • Sub ValorEnColumna()

    Worksheets(2).Range("B2:D4").Columns(B).Value = =rand()

    End Sub

    Rows. Hace referencia a una determinada fila de un rango. El siguiente ejemplo modifica el contenido de todas las celdas de las filas 4 y 5

    que pertenecen al rango.

    Sub ValorEnFila()

    Worksheets(Hoja1).Range("C4:E6").Rows(1:2).Value = 0.5

    End Sub

    Offset. Representa un desplazamiento de fila y columna respecto a una celda. Observmoslo en este ejemplo, que asigna distintos textos a

    las celdas de la columna B, dependiendo del valor de la celda contigua de la columna A.

    Sub ExamenDeColumna()

    Dim oCelda As Object

    For each oCelda In Worksheets(1).Range(A1:A30).Cells

    If IsNumeric(oCelda.Value) Then

    oCelda.Offset(0,1).Value = Nmero

    Else

    oCelda.Offset(0,1).Value = Quiz sea un texto...

    End If

    Next

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    44 de 64 21/04/2015 17:27

  • 10.5 Objeto Font.

    Representa el tipo de letra utilizado para los valores de las celdas de un rango. Estudiemos a continuacin algunas propiedades tiles de esteobjeto.

    Sub PonerNegrita()

    Range("A1:B5").Font.Bold = True

    End Sub

    Sub CambiarTipoLetra()

    UsedRange.Font.Name = Times New Roman

    End Sub

    Sub QuitarCursiva()

    Worksheets(Hoja3).Range(A1:B5).Font.Italic = False

    End Sub

    Sub Color()

    Worksheets(2).Range(C2).Font.Color = 50000

    End Sub

    10.6 Coleccin DocumentProperty (DocumentProperties).

    Esta coleccin representa las propiedades o caractersticas de un libro (Ttulo, Autor, Aplicacin, Fecha de ltima modificacin, etc.). Veamos

    estos dos ejemplos; en el primero, simplemente mostramos el nombre de cada propiedad y su valor; en el segundo, asignamos un valor a la

    propiedad cuyo nombre es Author:

    Sub PropiedadesDeLibro()

    OProp As Object

    For Each oProp In ActiveWorkbook.BuiltinDocumentProperties

    MsgBox oProp.Name & = & oProp.Value

    Next

    End Sub

    Sub PonerValor()

    Dim sNombre As String

    sNombre=InputBox(Escribe el nombre del autor del libro)

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    45 de 64 21/04/2015 17:27

  • ActiveWorkbook.BuiltinDocumentProperties("Author") = sNombre

    EndSub

    10.7 Coleccin Shape (Shapes).

    La coleccin de objetos Shape representa las formas u objetos de dibujo/grficos. Observemos un primer ejemplo sencillo:

    Sub ContarGraficos()

    MsgBox ActiveWorkbook.Worksheets(1).Shapes.Count

    End Sub

    Veamos a continuacin algunos mtodos y propiedades tiles de esta coleccin:

    Name. Cada grfico o forma posee un nombre. Por defecto, ser el tipo de forma y el ndice de creacin en orden creciente. Elsiguiente ejemplo cambia el nombre de un objeto de dibujo, que se trata de una lnea y fue el segundo objeto grfico que se cre en la hoja.

    Sub CambiarNombre()

    Workbooks(1).Worksheets(2).Shapes(Line 2).Name=Linea

    End Sub

    AddShape. Aade una forma grfica a la hoja de clculo. Habr que indicar el tipo de forma y sus caractersticas, como se puedeobservar en estos ejemplos:

    Sub AadirRectangulo()

    ActiveWorkbook.Worksheets(Hoja3).Shapes.AddShape _

    (msoShapeRectangle, 144,144, 72,72)

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    46 de 64 21/04/2015 17:27

  • Sub AadirNombrarTriangulo()

    Workbooks(2).Worksheets(3).Shapes.AddShape _

    (msoShapeIsoscelesTriangle,10,10, 100,100).Name=Triangulo

    End Sub

    AddLine. Aade una lnea en la hoja, indicando los puntos inicial y final.

    Sub AadirLinea()

    Workbooks(2).Worksheets(3).Shapes.AddLine 0, 0, 100, 50

    End Sub

    Height. Hace referencia a la altura de la forma.

    Width. Hace referencia al ancho de la forma.

    El siguiente ejemplo modifica las dimensiones de una forma de dibujo que existe en la hoja Hoja3, llamado Rectangulo.

    Sub ModificarDimensiones()

    With Workbooks(1).Worksheets(Hoja3).Shapes(Rectangulo)

    .Height = 50

    .Width =100

    EndWith

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    47 de 64 21/04/2015 17:27

  • 11 OBJETOS DE WORD

    A continuacin, se observa un grfico-resumen de la jerarqua de objetos existentes en Word. Al igual que ocurra en Excel, existen muchos otrosobjetos, pero resultara prcticamente imposible aprenderlos todos, adems del hecho de que algunos de ellos tienen una utilidad limitada.

    11.1 Objetos comunes con Excel.

    El objeto Application y las colecciones Windows y DocumentProperties tienen el mismo comportamiento que en Excel, como podemos ver en

    el siguiente ejemplo:

    Sub MaximizarWord()

    Application.WindowState=wdWindowStateMaximize

    MsgBox Numero de ventanas = & Application.Windows.Count

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    48 de 64 21/04/2015 17:27

  • 11.2 Coleccin Document (Documents).

    Esta coleccin representa el conjunto de documentos abiertos en un momento dado en Word. Estudiemos algunos mtodos y propiedadesaplicables a esta coleccin.

    Open. Abre un documento, indicando su nombre (y ubicacin).

    Sub AbrirDocumento()

    Dim oMiDoc As Object

    Set oMiDoc = Documents.Open (filename:=C:\Windows\Resumen.doc)

    End Sub

    Activate. Activa el documento que se indique de los que estn abiertos en un momento dado. La forma de hacer referencia a los

    documentos funciona de forma parecida a como se haca con los libros en Excel, pero a la hora de referenciarlos mediante un ndice, ste es

    inverso respecto al orden de apertura de los documentos. Vemoslo en dos ejemplos:

    Sub ActivandoPorNombre()

    Documents("CartaPepe").Activate

    End Sub

    Sub ActivandoPorOrden()

    Documents(3).Activate

    End Sub

    Add. Crea un documento en la aplicacin, en principio sin nombre.

    Sub AadirDocumento()

    Dim oNuevoDocu As Object

    Set oNuevoDocu = Documents.Add

    End Sub

    SaveAs. Graba un documento con el nombre indicado.

    Sub AadirYGuardar()

    Dim oMiDocu As Object

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    49 de 64 21/04/2015 17:27

  • Set oMiDocu=Documents.Add

    oMiDocu.Words(1).InsertBefore text:=Primeras Palabras.

    oMiDocu.SaveAs filename:=C:\Alumnos\ApuntesAIA.doc

    End Sub

    Close. Cierra un documento, con opcin a guardar los cambios.

    Sub CerrarDocumento()

    Dim oUnDocu As Object

    Set oUnDocu = Documents.Open _ (fileName:=C:\Alumnos\ApuntesAIA.doc)

    oUnDocu.Words(2).InsertAfter text:=ltimas palabras.

    oUnDocu.Close savechanges := True

    End Sub

    Printout. Manda un documento a la impresora.

    Sub ImprimirDocumento()

    Dim oUnDocu As Object

    Set oUnDocu = Documents.Open (fileName:=C:\Alumnos\ApuntesAIA.xls)

    oUnDocu.Printout

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    50 de 64 21/04/2015 17:27

  • 11.3 Pseudoobjeto ActiveDocument.

    El pseudoobjeto ActiveDocument, que realmente se trata de una instanciacin de la coleccin Documents, representa el documento que est

    activo en un momento dado. Al ser un objeto Document, se le pueden aplicar los mismos mtodos y propiedades que a aquel, como podemos

    observar en el siguiente ejemplo:

    Sub DocumentoActivo()

    If Documents.Count >0 Then

    MsgBox El documento activo es & ActiveDocument.Name

    11.3.1.1.1 Else

    11.3.1.1.2 MsgBox No hay documentos abiertos

    End If

    End Sub

    11.4 Objeto Range.

    Este objeto representa un rea contigua en un documento. Para definir un objeto de este tipo en Word, habr que indicar cul es el carcter inicialy cul el final del rango. El ejemplo siguiente define un rango que comienza en el carcter 0, sin incluirlo, y acaba en el dcimo inclusive, es decir,abarca los diez primeros caracteres del documento.

    Sub UnRango()

    Dim oMiRango As Object

    Set oMiRango = Documents(1).Range(start:=0, end:=10)

    11.4.1.1.1 End Sub

    Estudiemos algunos mtodos y propiedades tiles de este objeto:

    InsertBefore. Inserta el texto indicado delante del rango.

    Sub EscribirDelante()

    Dim oUnRango As Object

    Set oUnRango = ActiveDocument.Range(start:=0, end:=0)

    oUnRango.InsertBefore text:=Primeras Palabras

    End Sub

    InsertAfter. Siguiendo un formato similar al mtodo anterior, inserta un texto detrs del rango.

    Sub EscribirDetrsDelDecimo()

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    51 de 64 21/04/2015 17:27

  • Dim oRango As Object

    Set oRango = ActiveDocument.Range(start:=0, end:=10)

    oRango.InsertAfter text:=ltimas Palabras

    End Sub

    Delete. Elimina el rango indicado.

    Sub EliminarSieteCaracteres()

    Dim oRango As Object

    Set oRango = ActiveDocument.Range(start:=2, end:=9)

    oRango.Delete

    End Sub

    Text. Representa el texto contenido en un rango. Veamos un ejemplo:

    Sub VerSustituirTexto()

    Dim oRango As Object, sTexto As String

    Set oRango = ActiveDocument.Range(start:=0, end:=11)

    sTexto=oRango.Text

    If sTexto = Viejo Texto Then

    oRango.Text =Nuevo Texto

    End If

    End Sub

    Bold, Italic, Underline. Estas propiedades especifican el estilo de letra del texto contenido en el rango. Tambin se puede utilizar la

    propiedad Name del subobjeto Font para seleccionar el tipo de letra del rango, como se observa en el siguiente ejemplo:

    Sub DarFormatoAlTexto()

    Dim oRango As Object

    oRango = ActiveDocument.Range(start:=10, end:=20)

    With oRango

    .Font.Name = Century Gothic

    .Bold= False

    .Italic=True

    .Underline = True

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    52 de 64 21/04/2015 17:27

  • End Sub

    11.5 Coleccin Section (Sections).

    Esta coleccin representa cada una de las divisiones independientes de que consta un documento en Word. Lo ms usual es que un documentonicamente conste de una seccin, salvo en algunos casos excepcionales. Observemos un ejemplo sencillo:

    Sub Secciones()

    Dim oUnaSeccion As Object

    MsgBox ActiveDocument.Sections.Count

    Set oUnaSeccion = ActiveDocument.Sections(1)

    End Sub

    11.6 Coleccin Paragraph (Paragraphs).

    Esta coleccin est formada por cada uno de los prrafos de contiene un documento. Observemos un primer ejemplo:

    Sub TercerParrafo()

    Dim oElParrafo As Object

    MsgBox ActiveDocument.Paragraphs.Count

    Set oElParrafo = ActiveDocument.Paragraphs(3)

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    53 de 64 21/04/2015 17:27

  • Estudiemos a continuacin algunos mtodos y propiedades tiles de esta coleccin:

    Alignment. Alinea el prrafo con respecto a la pgina (izquierda, derecha, centrado, justificado).

    Sub CentrarParrafo()

    11.6.1.1 Dim oUnParrafo As Object

    Set oUnParrafo = ActiveDocument.Paragraphs(1)

    oUnParrafo.Alignment = wdAlignParagraphCenter

    End Sub

    LineSpacing. Especifica un espaciado entre las lneas de un prrafo, medido en puntos. Adems, disponemos de los mtodos Space1,

    Space15, Space2 para espaciados predeterminados bastante usuales.

    Sub EspaciarParrafo()

    ActiveDocument.Paragraphs(3).LineSpacing=16

    End Sub

    Add. Aade un nuevo prrafo, que en principio no ser ms que un salto de lnea.

    Sub AadirParrafo()

    11.6.1.2 Dim oParrafo As Object

    Set oParrafo = ActiveDocument.Paragraphs.Add

    o.Parrafo.Space15

    End Sub

    Range. Transforma el prrafo en un objeto Range. De este modo, al resultado se le podrn aplicar todos los mtodos del objeto Range. Hay

    que sealar que esta propiedad tambin existe para los objetos Section. Veamos un ejemplo bastante completo:

    Sub RangoParrafo()

    11.6.1.3 Dim oParrafo As Object

    Set oParrafo = ActiveDocument.Paragraphs.Add

    With oParrafo.Range

    .Bold =True

    .Text =Este es el nuevo prrafo

    .InsertAfter text:= y esto va a continuacin

    End With

    End Sub

    Hay que sealar que se pueden englobar varios prrafos en un rango, de modo que podremos manejarlos conjuntamente. En el siguiente ejemplo,cambiamos el estilo de letra de 3 prrafos:

    Sub RangoDeTresParrafos()

    Dim oRango As Object, oDocu As Object

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    54 de 64 21/04/2015 17:27

  • Set oDocu = Documents(CartaBanco.doc)

    Set oRango = oDocu.Range (start:= oDocu.Paragraphs(2).Range.Start, _ end:= oDocu.Paragraphs(4).Range.End)

    With oRango

    .Bold =True

    .Italic= True

    End With

    End Sub

    11.7 Coleccin Sentence (Sentences).

    Esta coleccin representa cada una de las frases contenidas en un documento. En general, un objeto Sentence se puede tratar como un objeto

    Range, de modo que se le podrn aplicar los mismos mtodos y propiedades. Observemos el siguiente ejemplo:

    Sub Frases()

    Dim oUnaFrase As Object

    Set oUnaFrase = ActiveDocument.Sentences(3)

    oUnaFrase.Font.Name = Wide Latin

    oUnaFrase.Italic = True

    oUnaFrase.InsertBefore Text:= Esta es la cuarta frase.

    End Sub

    Como ocurra con los objetos Paragraph, se pueden englobar varias frases en un rango. El siguiente ejemplo subraya las frases segunda,

    tercera y cuarta.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    55 de 64 21/04/2015 17:27

  • Sub RangoFrases()

    Dim oRango As Object, oDocu As Object

    Set oDocu = Documents(2)

    Set oRango = oDocu.Range (start:= oDocu.Sentences(2).Start, _

    end:= oDocu.Sentences(4).End)

    oRango.Underline =True

    End Sub

    11.8 Coleccin Word (Words).

    La coleccin Words representa cada una de las palabras contenidas en un documento. Del mismo modo que los objetos Sentence, un objeto

    Word se puede tratar como un objeto Range, aplicndole los mismos mtodos y propiedades.

    Sub Palabras()

    Dim oPalabra As Object

    For each oPalabra in ActiveDocument.Words

    MsgBox oPalabra

    Next

    End Sub

    De la misma forma que con los objetos Paragraph y Sentence, podemos hacer que un rango abarque varias palabras, como se observa en el

    ejemplo siguiente, en el que cambiamos la presentacin de las quince primera palabras del documento e insertamos un texto al principio del

    documento.

    Sub Mayusculas()

    Dim oRango As Object, oDocu As Object

    Set oDocu = Documents(Resumen.doc)

    Set oRango = oDocu.Range (Start:=oDocu.Words(1).Start,

    End := oDocu.Words(15).End)

    With oRango

    .Case = wdUpperCase

    .InsertBefore Text := Texto anterior

    .Italic = True

    EndWith

    End Sub

    12 OBJETOS DE ACCESS

    A continuacin, se muestra un resumen de la jerarqua de objetos en Access; por supuesto, existen muchos otros objetos, pero nicamente noscentraremos en los ms tiles.

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    56 de 64 21/04/2015 17:27

  • 12.1 Objeto Application

    Este objeto representa la propia aplicacin Access, y funciona de modo parecido a como lo haca en Excel y en Word, salvo algunas

    diferencias. He aqu algunos mtodos y propiedades aplicables a este objeto:

    CloseCurrentDatabase. Cierra la base de datos con la que estamos trabajando; veamos un ejemplo sencillo:

    Sub CerrarBaseDatos()

    Application.CloseCurrentDatabase

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    57 de 64 21/04/2015 17:27

  • OpenCurrentDatabase. Abre una base de datos, especificando su nombre (y localizacin), como se puede observar en este ejemplo:

    Sub AbrirBaseDatos()

    Application.OpenCurrentDatabase(C:\AIA\futbol.mdb)

    End Sub

    12.2 Coleccin Database (Databases).

    Esta coleccin representa las bases de datos con las que estamos trabajando en un momento dado; hay que tener en cuenta la problemtica de

    Access con respecto a la imposibilidad de la simultaneidad de distintas bases de datos.

    Como consecuencia, en la prctica, esta coleccin sirve para consultar bases de datos desde Excel o Word, mientras que en Access, se utiliza ensu lugar el pseudoobjeto CurrentDB, que representa la base de datos activa (nica) en un momento dado. Vemoslo en un ejemplo:

    Sub BaseDatosActual()

    Dim oBdatos As Object

    Set oBdatos = Application.CurrentDb

    MsgBox La B.D. activa es & oBDatos.Name

    End Sub

    12.3 Coleccin Property (Properties).

    La coleccin de objetos Properties hace referencia a las distintas propiedades de una base de datos (autor, fecha de la ltima modificacin,

    etc.). No existen grandes diferencias en cuanto a la coleccin DocumentProperties de Excel o de Word. He aqu un ejemplo sencillo:

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    58 de 64 21/04/2015 17:27

  • Sub VerPropiedades()

    Dim oBD As Object, oPropi As Object

    Set oBD = Application.CurrentDB

    For each oPropi In oBD.Properties

    MsgBox Propiedad = & oPropi.Name & Valor = & oPropi.Value

    Next

    End Sub

    12.4 Coleccin Recordset (Recorsets).

    Esta coleccin contiene un conjunto arbitrario de registros, procedentes de tabla o consulta. En el siguiente ejemplo se obtienen dos conjuntos

    de registros: uno procede de una tabla y el otro de un consulta.

    Sub AbrirRegistrosTablaCons()

    Dim oRegTabla As Object, oRegCons

    Set oRegTabla = CurrentDB.OpenRecordset(Equipos)

    Set oRegCons = CurrentDb.OpenRecordset(Consulta2)

    MsgBox La Tabla abierta es & oRegTabla.Name

    End Sub

    Estudiemos a continuacin algunos mtodos y propiedades tiles de esta coleccin:

    RecordCount. Proporciona el nmero de registros que contiene el RecordSet, como se observa en el siguiente ejemplo:

    Sub ContarRegistros()

    Dim oRegistros As Object

    Set oRegistros =CurrentDB.OpenRecordset(Pacientes)

    MsgBox Nmero de pacientes = & oRegistros.RecordCount

    End Sub

    MoveFirst, MoveLast. Buscan el primer y el ltimo registro del RecordSet, respectivamente. Por defecto, al abrir una tabla o consulta,

    estaremos situados en el primero. Veamos un ejemplo:

    Sub Registros()

    Dim oRegis As Object

    Set oRegis = CurrentDB.OpenRecordset(ConsultaPorPas)

    oRegis.MoveLast

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    59 de 64 21/04/2015 17:27

  • End Sub

    MoveNext. Busca el siguiente registro respecto del ltimo en el que estemos situados.

    EOF. Indica si hemos llegado al final del Recordset, es decir, ya no existen ms registros.

    12.5 Coleccin Field (Fields).

    La coleccin Fields representa cada uno de los campos que forman parte de los registros de un RecordSet; es decir, nos permite obtener cada

    uno de los valores que componen un registro. Veamos algunos ejemplos sencillos:

    Sub ContarCampos()

    Dim oRegs As Object

    Set oRegs = CurrentDB.OpenRecordset(Mdicos)

    MsgBox La tabla Mdicos tiene & oRegs.Fields.Count & campos

    End Sub

    Sub VerCampos()

    Dim oRegs As Object, iBucle As Integer

    Set oRegs = CurrentDB.OpenRecordset(Partidos)

    For iBucle = 0 to oRegs.Fields.Count 1

    MsgBox El nombre del campo n & iBucle & es & oRegs.Fields(iBucle).Name

    Next

    MsgBox oRegs.Fields(GolesEquipoLocal).Value

    End Sub

    12.6 Objeto DoCmd.

    Este objeto, algo peculiar, hace referencia a la ejecucin de ciertas acciones sobre la base de datos (ver tablas, abrir formularios, etc.). Veamos

    algunos de sus mtodos y propiedades ms tiles:

    OpenTable, OpenForm, OpenReport. Abre, respectivamente, la tabla, formulario o informe que se indique y, opcionalmente, el modo de

    apertura (acViewPreview, acViewNormal, acViewDesign). Observemos este ejemplo, que abre cada uno de tales objetos:

    Sub AbrirObjetos()

    Application.DoCmd.OpenTable Candidatos, acViewDesign

    Application.DoCmd.OpenForm FormVotantes

    DoCmd.OpenReport InfProyec, acViewPreview

    End Sub

    Apuntes de Visual Basic para Office (VBA) file:///C:/Documents and Settings/iessierraguara/Escritorio/Apuntes de ...

    60 de 64 21/04/2015 17:27

  • GoToControl. Nos sita en un control (botn, campo, etc.) de una tabla, formulario o informe abierto. Obsrvese en el siguiente ejemplo:

    Sub IrAControl()

    DoCmd.OpenForm FormVotantes

    DoCmd.GoToControl Nivel Cultural

    End Sub

    FindRecord, FindNext. Busca un registro que contenga un valor especificado en el campo actual, y el siguiente registro que lo contenga,

    respectivamente, como se ve a continuacin:

    Sub Buscar()

    DoCmd.OpenTable Partidos

    DoCmd.GoToControl Tendencia

    DoCmd.FindRecord Centro

    DoCmd.FindNext

    End Sub

    Close. Cierra un objeto que estuviese abierto; se debe indicar adems su tipo (acTable, acForm, acReport). Observemos el siguiente ejemplo:

    Sub Cerrar()

    DoCmd.OpenTable Partidos

    DoCmd.OpenForm FormVotantes

    DoCmd.Close acForm, FormVotantes

    DoCmd.Close acTable, Partidos, SaveYes

    DoCmd

    End Sub

    13 COMUNICACIN ENTRE APLICACIONES

    Hasta ahora, hemos trabajo con Excel, Word y Access, pero siempre de forma individual, es decir, aplicando el cdigo en VBA a uno solo de talesprogra