
Ejemplos de Basic (Macros de Office)
Nociones de Basic (VBA)
Resumen de Visual Basic para aplicaciones (VBA).
Sin embargo, existen importantes aplicaciones que incorporan Visual Basic para aplicaciones (VBA) como lenguaje de macros. En particular los programas de Microsoft Excel, Access, Word etc.
Una macro es una serie de instrucciones que reproducen las acciones del usuario con la computadora durante el periodo de grabación. En la macro se pueden grabar automáticamente en Basic acciones habituales para que un usuario de Word o de Excel etc. no se vea obligado a repetirlas constantemente. Por ejemplo, el formato de página de una oficina, una empresa, un colegio etc.Se accede a este sistema mediante el menú Herramientas>Macro>Grabar nueva macro. La macro puede ser posteriormente ejecutada mediante el menú Herramientas>Macro>Macros...
Las instrucciones que conforman una macro son accesibles para su revisión y edición a través del entorno de programación de Visual Basic, al que puede entrarse mediante el menú Herramientas>Macro>Editor de Visual Basic. El usuario puede adaptar la secuencia de comandos generada por el ordenador a sus necesidades específicas.
Las variables permiten almacenar datos. Los nombres de las variables no admiten espacios y nunca van entre comillas. Conviene que el nombre se relacione con el dato que se almacena. Si queremos guardar en la memoria una edad, lo deseable es que el nombre de la variable sea edad. Si queremos guardar un nombre lo lógico es que la variable se llame nombre.
Hay diversos tipos de variables, los principales son:
| Integer | Valor Entero | Entre -32768 y 32767 |
| Long | Valor Entero Largo | Si se quiere un entero que exceda los valores de Integer |
| Single | Valor Real | Admite valores decimales |
| Double | Valor Real Doble | Si se quiere un real que exceda los valores de Single |
| String | Carácter (texto) | Cadenas de texto |
| Boolean | Valor Lógico | TRUE / FALSE |
| Currency | Monedas y Punto Fijo | Decimales fijos |
| Date | Fecha | |
| Object | Referencias a objetos | |
| Variant | Cualquiera |
Declarar una variable significa darla a conocer
antes de utilizarla. En VBA no es necesario declarar las variables. Sin embargo, es
una buena práctica el declararlas.
Las variables se declaran al principio del programa o de
una subrutina mediante: DIM. Podemos declarar las variables diciendo de qué tipo
son:
DIM a AS INTEGER
DIM temp AS LONG
DIM b AS STRING
DIM euro AS CURRENCY
Si no decimos de qué tipo es, se le asigna el tipo VARIANT
que puede ser numérica o alfanumérica según convenga.
Una tabla o matriz o array es un conjunto de variables que
tienen el mismo nombre pero distinto subíndice :
DIM a(7)
Crea estos elementos : a(0), a(1), a(2), a(3), a(4), a(5), a(6), a(7)
Asignación e incremento de las variables
Para asignar el contenido de una variable se utiliza el operador =
edad=18
mensaje="Escribe tu nombre"
nombre=InputBox(mensaje)
Para incrementar una variable se utiliza la sintaxis
n=n+1
si n tenía un valor 1 después de esa instrucción n tendrá un valor 2.
También se pueden incrementar variables del tipo string:
Frase="Buenos "
Frase=Frase+"días"
---> Buenos días
Una variable es válida sólo en el sitio en el que se declara.
Para que una variable sea reconocible por todas las subrutinas hay
que declararla al principio.(General)
a) Numéricos
+ suma
- resta
* multiplicación
/ división
^ exponenciación
\ división
entera
MOD resto de la división
b) Alfanuméricos. Se incluyen los operadores + y & de concatenación de cadenas.
c) Relacionales
= igual
<> distinto
> mayor
>= mayor o igual
< menor
<= menor o igual
El operador = tiene dos sentidos. Por un lado, como acabamos de ver, indica la igualdad. Por otro permite la asignación, es decir la introducción de datos en una variable. En otros lenguajes (C, Java, Pascal etc.) existen operadores diferentes para la igualdad y la asignación,
d) Lógicos AND
OR etc.
Ejecución condicional.
Se consigue mediante la sentencia IF.Su sintaxis es:
IF condicion THEN <sentencia>
Se puede usar en combinación con ELSEIF:IF condicion1 THEN
bloque de sentencias 1
ELSEIF
bloque de sentencias 2
ENDIF
SELECT CASE expresion
CASE valor1
bloque 1
CASE valor2
bloque 2
CASE valor 3
bloque 3
CASE ELSE
bloque alternativo
END SELECT
Ejemplo:
|
SELECT CASE periodo |
Los Bucles o repeticiones permiten repetir un fragmento de código tantas veces como lo indique el usuario o mientras se cumpla una condición lógica.
La instrucción FOR..NEXT ejecuta un bloque de sentencias un número determinado de veces. Su sintaxis esFOR contador=inicio TO final (STEP incremento)
bloque
NEXT contador
Los arrays (o matrices) se utilizan frecuentemente dentro de los bucles FOR - NEXT.
Un grupo de sentencias puede ejecutarse mientras se cumple una determinada condición, o hasta que se cumpla una determinada condición. En el primer caso, se escribe
DO WHILE condicion
bloque
LOOP
DO UNTIL condicion
bloque
LOOP
DO
bloque
LOOP WHILE condicion (o LOOP UNTIL condicion1)
DO
bloque
IF condicion2 THEN EXIT DO
LOOP WHILE condicion1 (o LOOP UNTIL condicion1)
Para escribir las instrucciones es necesario agrupar este código dentro de Subrutinas o Funciones.
Las subrutinas se declaran mediante la palabra reservada SUB, seguida del nombre de la subrutina y,opcionalmente (entre paréntesis) la lista de argumentos y sus tipos. Las subrutinas no devuelven ningún valor como respuesta, sino que se utilizan para ejecutar comandos .
Ejemplo:
|
Sub escribe(contenido) |
Hay que prestar especial atención al emparejamiento de las cláusulas de apertura y cierre. Si existiese un SUB o un END SUB de más, la computadora se negaría a ejecutar cualquier porción del programa.
Las funciones se declaran mediante la palabra reservada FUNCTION, seguida del nombre de la función, entre paréntesis la lista de argumentos y , opcionalmente, sus tipos, si los tuviese, y el tipo de valor de salida. Dentro del cuerpo de la función se debe incluir una línea de asignación de resultado, que asigne valor a una variable implícitamente declarada con el mismo nombre y tipo devuelto por la función.
Ejemplo:
|
FUNCTION Resultado( x, y AS Integer) AS String Resultado = “El resultado es ” & (x+y) END FUNCTION
|
FUNCIONES DE BIBLIOTECA (Integradas en casi todas las versiones de Basic)
Existen muchas funciones de uso frecuente que ya están incorporadas dentro de BASIC. Son las llamadas funciones de biblioteca:
Funciones numéricas habituales:En cuanto a las funciones de manejo de cadenas, las más habituales son:
VAL devuelve el valor numérico de una cadenaSTR convierte un número en una cadena de caracteres
LEN Cuenta el número de caracteres.
|
nom = "Juan Antonio" |
LEFT
Devuelve los primeros caracteres de la izquierda de una cadena.
| nom = "Juan Antonio" izq = LEFT (nom, 4) ---------> Juan |
RIGHT Devuelve los últimos carácteres de la derecha de una cadena.
| nom = "Juan Antonio" izq = RIGHT (nom, 7) ---------> Antonio |
MID Devuelve los n carácteres después del m.
| nom = "Juan Antonio" izq = MID (nom, 2, 3) ---------> uan |
|
nom = "Juan Antonio" |
|
nom = "Juan Antonio" |
Cambia la letra "n" por la "M"
|
nom = "Juan Antonio" |
CHR y ASC son complementarios.
a CHR le ponemos un número y nos devuelve su carácter.
a ASC le ponemos un carácter y nos devuleve su número.
CHR (97) ------> a
ASC ("b") ------> 98
Los objetos son entidades que combinan datos, comportamiento (métodos) y propiedades (variables que los diferencia del resto). VBA incorpora muchos objetos que permiten realizar un gran número de tareas.
Por ejemplo para dibujar un corazón en el documento actual:
|
izquierda=20 derecha=20 ancho=100 alto= 100 ActiveDocument.Shapes.AddShape(msoShapeHeart, izquierda, arriba, ancho, alto).Select
|
En este ejemplo se utiliza utiliza el objeto ActiveDocument para hacer referencia a un documento específico word y dibujar un corazón en este documento.
Los objetos se presentan en forma de jerarquías. Cuando nos referimos a un
objeto contenido o miembro, estamos especificando su posición en la jerarquía
del objeto, usando un
punto como separador entre el contenedor y el miembro.
Aunque el lenguaje VBA es común para todas las aplicaciones de Office, cada programa Excel, Access, Word tiene objetos propios.
Es propio de especialistas el conocimiento exhaustivo de todos estos objetos. Se puede consultar la ayuda para utilizar estos objetos.
Lo más sencillo es grabar macros y observar los objetos que se han escrito automáticamente.
Posteriormente podemos crear subrutinas más sencillas para acceder fácilmente a estos objetos por ejemplo:
|
Sub escribe(contenido) escribe ("Segunda frase ") |