Apuntes de Visual Basic para Office (VBA)
Apuntes de Visual Basic para Office (VBA)
1 de 64
INTRODUCCIN
A LA PROGRAMACIN DE
Application
Ascensor
23 Word
Excel
OFFICE.
VisualCabina
Basic para Aplicaciones
(VBA)
Workbooks
Documents
Puerta
MACROS
2.1. UTILIZACIN DE LA GRABADORA DE MACROS.
2.2. EJECUCIN DE UNA MACRO.
2.1
3
3.1
4
4.1
4.2
EL MDULO DE CDIGO
5.1
6
6.1
6.2
DECLARACIN DE VARIABLES
6.3
6.4
DECLARACIN DE CONSTANTES
6.5
6.6
7.1
SENTENCIAS DE SELECCIN
7.2
8.1
8.1.1
8.1.2
8.1.3
MODO INTERRUPCIN
8.1.4
10
OBJETOS DE EXCEL
10.1
OBJETO APPLICATION
10.2
Pseudoobjeto ActiveWorkbook.
10.3
End Sub
10.4
Objeto Range.
10.5
Objeto Font.
10.6
21/04/2015 17:27
2 de 64
10.7
11
OBJETOS DE WORD
11.1
11.2
Pseudoobjeto ActiveDocument.
11.4
Objeto Range.
11.5
11.6
11.7
11.8
12
OBJETOS DE ACCESS
12.1
Objeto Application
12.2
12.3
12.4
12.5
12.6
Objeto DoCmd.
13
13.1
Apertura De Aplicaciones
13.2
13.3
13.4
13.5
MACROS
21/04/2015 17:27
3 de 64
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.
21/04/2015 17:27
4 de 64
Proyectos a los que se asociar la macro (el documento o libro actual, todos los documentos construidos con la plantilla Normal.dot, etc.).
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.
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.
21/04/2015 17:27
5 de 64
Se podr ejecutar la macro por completo (Ejecutar) o bien descomponindola en las diferentes acciones que la forman (Paso a paso).
2.1
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.
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
21/04/2015 17:27
6 de 64
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.
21/04/2015 17:27
7 de 64
Ventana Propiedades. Muestra las propiedades de un control ActiveX, de un UserForm o de un Mdulo de cdigo. Las propiedades pueden
aparecer ordenadas de dos formas distintas:
Alfabticamente.
Por categoras.
21/04/2015 17:27
8 de 64
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).
21/04/2015 17:27
9 de 64
:
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.
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.
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.
10 de 64
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).
21/04/2015 17:27
11 de 64
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
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,
21/04/2015 17:27
12 de 64
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.
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).
21/04/2015 17:27
13 de 64
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 <Todas>).
Texto de bsqueda. En este cuadro, introduciremos la expresin sobre la cual buscamos informacin (por ejemplo, la propiedad Name, el
clases o miembros que cumplen el criterio de bsqueda. Los resultados se dividen en tres apartados.
21/04/2015 17:27
14 de 64
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
21/04/2015 17:27
15 de 64
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.
21/04/2015 17:27
16 de 64
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.
21/04/2015 17:27
17 de 64
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.
21/04/2015 17:27
18 de 64
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.
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:
Intervalo de valores
Byte
0 a 255
Integer (Entero)
-32.768 a 32.767
-2109 a 2109
sencilla)
Positivos: 1,410-45 a 3,41038
Double (Real en coma flotante de doble
precisin)
Object (Objeto)
Objeto de Office.
De 1 a 65.400 caracteres
Variant
Cualquier valor
21/04/2015 17:27
19 de 64
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
indicar su tipo. Por tanto, al no indicar un tipo concreto, se supone tipo Variant.
Ejemplos:
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.
Obligatorias.
21/04/2015 17:27
20 de 64
21/04/2015 17:27
21 de 64
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
Ejemplos:
Const vUnaVariable As Variant = 6.5
Const sCiudad As String = Santa Cruz de Tenerife
Const vNumeroPi = 3.141592
21/04/2015 17:27
22 de 64
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
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.
21/04/2015 17:27
23 de 64
De seleccin (condicionales).
De repeticin (bucles).
(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.
21/04/2015 17:27
24 de 64
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
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
21/04/2015 17:27
25 de 64
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
21/04/2015 17:27
26 de 64
7.2
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:
21/04/2015 17:27
27 de 64
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
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
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
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).
21/04/2015 17:27
28 de 64
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
21/04/2015 17:27
29 de 64
ver el curso exacto de ejecucin del cdigo, es decir, la secuencia de acciones que se realizan
21/04/2015 17:27
30 de 64
8.1.1
Podemos insertar puntos de interrupcin en una determinada lnea de tres formas distintas:
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:
21/04/2015 17:27
31 de 64
8.1.2
Para eliminar el punto de interrupcin colocado en una lnea, podemos escoger alguno de los pasos siguientes:
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:
detener la ejecucin del programa mediante Ejecutar-Restablecer o el botn correspondiente de la barra de herramientas
8.1.4
Este cuadro de informacin se pondr en funcionamiento slo cuando entremos en Modo Interrupcin (para activarlo o desactivarlo,
recurriremos a Herramientas-Opciones-Editor).
21/04/2015 17:27
32 de 64
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:
21/04/2015 17:27
33 de 64
picar dos veces sobre la variable, o bien seleccionarla arrastrando con el ratn
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:
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.
21/04/2015 17:27
34 de 64
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.
21/04/2015 17:27
35 de 64
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.
21/04/2015 17:27
36 de 64
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
21/04/2015 17:27
37 de 64
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, hay
muchos otros, pero, adems de resultar prcticamente imposible dominarlos todos, conviene utilizar nicamente ciertos objetos que nos
proporcionan toda la funcionalidad que necesitamos a la hora de escribir nuestros mdulos VBA.
Sub Acabar()
Application.Quit
End Sub
Quit
End Sub
21/04/2015 17:27
38 de 64
Sub Contar ()
MsgBox Application.Windows.Count
End Sub
Sub Cerrar()
Application.Windows(3).Close
End Sub
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
21/04/2015 17:27
39 de 64
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
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.
21/04/2015 17:27
40 de 64
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
21/04/2015 17:27
41 de 64
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
1
2
3.5
2.9
6.3
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
21/04/2015 17:27
42 de 64
ActiveWorkbook.Worksheets.Add
End Sub
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
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
21/04/2015 17:27
43 de 64
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 diferencia
con el mtodo UsedRange del objeto Worksheet. En general, el mtodo CurrentRegion no englobar todas las celdas no vacas, salvo en el
caso en que entre ellas no haya ninguna fila o columna vaca. Veamos a continuacin dos ejemplos de utilizacin de este mtodo; en el
segundo 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.
21/04/2015 17:27
44 de 64
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
21/04/2015 17:27
45 de 64
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
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)
21/04/2015 17:27
46 de 64
ActiveWorkbook.BuiltinDocumentProperties("Author") = sNombre
EndSub
Name. Cada grfico o forma posee un nombre. Por defecto, ser el tipo de forma y el ndice de creacin en orden creciente. El
siguiente 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 puede
observar en estos ejemplos:
Sub AadirRectangulo()
ActiveWorkbook.Worksheets(Hoja3).Shapes.AddShape _
(msoShapeRectangle, 144,144, 72,72)
End Sub
21/04/2015 17:27
47 de 64
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
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
21/04/2015 17:27
48 de 64
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 otros
objetos, pero resultara prcticamente imposible aprenderlos todos, adems del hecho de que algunos de ellos tienen una utilidad limitada.
Sub MaximizarWord()
Application.WindowState=wdWindowStateMaximize
MsgBox Numero de ventanas = & Application.Windows.Count
End Sub
21/04/2015 17:27
49 de 64
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
Sub AadirDocumento()
Dim oNuevoDocu As Object
Set oNuevoDocu = Documents.Add
End Sub
Sub AadirYGuardar()
Dim oMiDocu As Object
21/04/2015 17:27
50 de 64
Set oMiDocu=Documents.Add
oMiDocu.Words(1).InsertBefore text:=Primeras Palabras.
oMiDocu.SaveAs filename:=C:\Alumnos\ApuntesAIA.doc
End Sub
Sub CerrarDocumento()
Sub ImprimirDocumento()
oUnDocu.Printout
End Sub
21/04/2015 17:27
51 de 64
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
End If
End Sub
End Sub
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()
21/04/2015 17:27
52 de 64
Sub EliminarSieteCaracteres()
Dim oRango As Object
Set oRango = ActiveDocument.Range(start:=2, end:=9)
oRango.Delete
End Sub
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
21/04/2015 17:27
53 de 64
End Sub
Sub TercerParrafo()
Dim oElParrafo As Object
MsgBox ActiveDocument.Paragraphs.Count
Set oElParrafo = ActiveDocument.Paragraphs(3)
End Sub
21/04/2015 17:27
54 de 64
Alignment. Alinea el prrafo con respecto a la pgina (izquierda, derecha, centrado, justificado).
Sub CentrarParrafo()
11.6.1.1
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
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
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
21/04/2015 17:27
55 de 64
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.
21/04/2015 17:27
56 de 64
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
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 nos
centraremos en los ms tiles.
21/04/2015 17:27
57 de 64
CloseCurrentDatabase.
Cierra la base de datos con la que estamos trabajando; veamos un ejemplo sencillo:
Sub CerrarBaseDatos()
Application.CloseCurrentDatabase
End Sub
21/04/2015 17:27
58 de 64
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
Sub BaseDatosActual()
Dim oBdatos As Object
Set oBdatos = Application.CurrentDb
MsgBox La B.D. activa es & oBDatos.Name
End Sub
21/04/2015 17:27
59 de 64
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
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
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
21/04/2015 17:27
60 de 64
End Sub
MoveNext.
EOF. Indica si hemos llegado al final del Recordset, es decir, ya no existen ms registros.
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
21/04/2015 17:27
61 de 64
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
Para que unas aplicaciones pueden utilizar o hacer referencia a otras, es necesario utilizar sentencias de declaracin, similares a las variables. Los
tipos de datos u objetos que podemos declarar, de modo que cada uno de ellos har referencia a una aplicacin, son los siguientes:
Word.Application
Excel.Application
21/04/2015 17:27
62 de 64
Access.Application
Un detalle importante es que, si no se indica lo contrario, una aplicacin slo reconoce sus propios objetos. Para que reconozca y puede utilizar
otra aplicacin distinta y sus correspondientes objetos, debemos hacer uso de las referencias, que se han de seleccionar desde la opcin
Referencias del men Herramientas del Editor de VBA. He aqu las referencias que podemos de seleccionar y el tipo de aplicacin al que
corresponde cada una de ellas:
CreateObject. Se trata de una funcin en la cual indicamos el tipo de aplicacin al que corresponde una variable. Vemoslo en un
ejemplo:
Sub DesdeExcel()
Dim apliWord As Word.Application
Set apliWord = CreateObject(Word.Application.8)
ApliWord.Visible=True
End Sub
Hay que resear que la propiedad Visible nos permite hacer visible la aplicacin; por defecto, el valor que contiene es False (salvo para
Access, que es True), es decir, la ventana de la aplicacin permanece invisible.
New. Esta palabra reservada abrevia la forma de creacin de una aplicacin, pues permite crearla al mismo tiempo que se declara la
variable correspondiente. Veamos un ejemplo:
Sub DesdeWord()
Dim apliExcel As New Excel.Application
apliExcel.Visible=True
End Sub
21/04/2015 17:27
63 de 64
Sub DesdeAccess()
Dim apliWord As Object
Set apliWord = GetObject ( ,Word.Application.8)
End Sub
Sub DesdeAccess()
Dim apliExcel As New Excel.Application
apliExcel.Visible=True
apliExcel.Quit
End Sub
Sub DesdeExcel()
Dim apliWord As Word.Application, oDocu As Object
Set apliWord = CreateObject(Word.Application.8)
Set oDocu = apliWord.Documents.Open (filename:=C:\Mio.doc)
MsgBox Palabras = & oDocu.Words.Count
oDocu.Close
apliWord.Quit
21/04/2015 17:27
64 de 64
End Sub
Sub DesdeWord()
Dim apliAccess As New Access.Application
apliAccess.OpenCurrentDatabase C:\AIA\encuesta.mdb
apliAccess.DoCmd.OpenTable Votantes
apliAccess.DoCmd.Close acTable,Votantes
apliAccess.CloseCurrentDatabase
apliAccess.Quit
End Sub
21/04/2015 17:27