Macros
Macros
Macros
EXCEL?
Si utilizas Excel frecuentemente es posible que en alguna
ocasión te hayas encontrado ejecutando una misma serie de
acciones una y otra vez. Esas acciones que haces repetidas
veces se podrían automatizar con una macro.
Una macro es un conjunto de comandos que se almacena en
un lugar especial de Excel de manera que están siempre
disponibles cuando los necesites ejecutar.
Por ejemplo, si todas las mañanas creas un reporte de ventas y
en ese reporte siempre das el mismo formato a los textos, se
podría crear una macro para que lo haga automáticamente por
ti. Las macros se utilizan principalmente para eliminar la
necesidad de repetir los pasos de aquellas tareas que realizas
una y otra vez.
UN LENGUAJE DE PROGRAMACIÓN
Las macros se escriben en un lenguaje de computadora
especial que es conocido como Visual Basic for Applications
(VBA). Este lenguaje permite acceder a prácticamente todas
las funcionalidades de Excel y con ello también ampliar la
funcionalidad del programa.
MOSTRAR LA PESTAÑA
PROGRAMADOR EN EXCEL
La pestaña Programador es ampliamente utilizada en la
creación de macros y de controles de formulario. Sin embargo,
dicha pestaña no es mostrada de manera predetermina en
la Cinta de opciones de Excel y por lo tanto es importante
aprender a mostrarla.
Para activar la pestaña Programador, debemos acudir a la
configuración de la Cinta de opciones la cual se encuentra en
el cuadro de diálogo Opciones de Excel y a continuación
aprenderemos dos métodos para llegar a dichas opciones de
configuración.
LA GRABADORA DE
MACROS
Puedes crear una macro utilizando el lenguaje de
programación VBA, pero el método más sencillo es utilizar
la grabadora de macros que guardará todos los pasos
realizados para ejecutarlos posteriormente.
LA GRABADORA DE MACROS EN EXCEL
2010
La grabadora de macros almacena cada acción que se realiza
en Excel, por eso es conveniente planear con antelación los
pasos a seguir de manera que no se realicen acciones
innecesarias mientras se realiza la grabación. Para utilizar la
grabadora de macros debes ir a la ficha Programador y
seleccionar el comando Grabar macro.
EL CÓDIGO DE LA
GRABADORA DE MACROS
Una manera muy interesante de descubrir y aprender más
sobre código VBA es analizar el código generado por
la Grabadora de macros. Para este ejemplo grabaremos una
macro muy sencilla que solamente cambie el color de la fuente
de la celda actual.
Para comenzar debemos ir a la ficha Programador y pulsar el
comando Grabar macro lo cual mostrará el cuadro de diálogo
donde asignaré un nombre a la macro que estoy por crear.
ESTABLECER SEGURIDAD
DE MACROS
La seguridad es un tema importante al hablar de macros en
Excel. Si abres algún archivo que contenga una macro
maliciosa puedes causar algún tipo de daño al equipo. De
manera predeterminada Excel no permite ejecutar macros
automáticamente.
Sin embargo, si estás creando tus propias macros y deseas
remover esta protección porque sabes que no existe código
malicioso, entonces puedes modificar la configuración
para habilitar todas las macros. Para hacerlo debes seguir
los siguientes pasos.
Haz clic en la ficha Archivo y posteriormente en Opciones.
Dentro del cuadro de diálogo mostrado selecciona la
opción Centro de confianza y posteriormente pulsa el
botón Configuración del centro de confianza. Se mostrará el
cuadro de diálogo Centro de confianza.
PRINCIPIOS BASICOS
PROGRAMANDO EN VBA
Excel 2010 es una de las herramientas de software más
poderosas para el manejo, análisis y presentación de datos.
Aun y con todas sus bondades, en ocasiones Excel no llega a
suplir algunas necesidades específicas de los usuarios.
PRINCIPIOS FUNDAMENTALES
La programación en VBA puede ser un tanto misteriosa para la
mayoría de los usuarios de Excel, sin embargo una vez que se
comprenden los principios básicos de programación en VBA se
comenzarán a crear soluciones robustas y efectivas.
EL EDITOR DE VISUAL
BASIC
El Editor de Visual Basic, VBE por sus siglas en inglés, es un
programa independiente a Excel pero fuertemente relacionado
a él porque es el programa que nos permite escribir código
VBA que estará asociado a las macros.
Existen al menos dos alternativas para abrir este editor, la
primera de ellas es a través del botón Visual Basic de la ficha
Programador.
SUBRUTINAS EN VBA
El primer concepto que explicare es la instrucción Sub que es
la abreviación de la palabra subrutina. Una subrutina no es más
que un conjunto de instrucciones que se ejecutarán una por
una hasta llegar al final de la subrutina que está especificado
por la instrucción End Sub.
Las subrutinas nos ayudan a agrupar varias instrucciones de
manera que podamos organizar adecuadamente nuestro
código. Una subrutina siempre tiene un nombre el cual debe
ser especificado justo después de la instrucción Sub y seguido
por paréntesis.
LA FUNCIÓN MSGBOX EN VBA
La subrutina que acabamos de crear para este ejemplo
solamente tiene una instrucción dentro la cual hace uso de la
función MsgBox. Esta función nos ayuda a mostrar una
ventana de mensaje de manera que podamos estar
comunicados con el usuario sobre cualquier error o advertencia
que necesitamos darle a conocer. Para este ejemplo he
utilizado la forma más sencilla de la función MsgBox la cual
solamente tiene un solo argumento que es precisamente el
mensaje que necesitamos mostrar en pantalla al usuario.
EJECUTAR MACRO
Para probar nuestro código bastará con pulsar el botón
Ejecutar que se encuentra dentro de la barra de herramientas.
UTILIZAR COMENTARIOS
EN VBA
Utilizar comentarios dentro del código VBA es una de las
mejores prácticas que debes adoptar desde que inicias en el
mundo de la programación en Excel. Los comentarios harán
que tu código sea fácil de entender.
Un comentario en VBA es una línea dentro del código que no
será tomada en cuenta al momento de realizar la ejecución.
Los comentarios serán solo visibles por ti al momento de editar
el código dentro del Editor de Visual Basic.
Para agregar un comentario será suficiente con colocar una
comilla sencilla (‘) al inicio de la línea. Después de colocar la
comilla sencilla debes escribir el comentario y al terminar de
insertar la línea Excel colocará automáticamente el texto en
color verde indicando que ha reconocido la línea como
un comentario en VBA.
He visto en más de una ocasión que muchas personas no
tienen esta buena práctica al programar en VBA y el problema
se presentará cuando pase el tiempo y tengan que modificar el
código pero ya no recuerden la lógica implementada ni lo que
significa cada una de las variables.
NAVEGANDO EL MODELO
DE OBJETOS
Excel tiene un modelo de objetos el cual es una jerarquía de
todos los objetos que podemos utilizar desde el lenguaje VBA.
En la parte superior de la jerarquía se encuentra el objeto
Application y todos los demás objetos estarán por debajo de él.
ACCEDER A OBJETOS INFERIORES
Para tener acceso a los objetos que están por debajo del objeto
Application podemos utilizar el punto. El punto nos ayuda a
navegar por la jerarquía hacia un nivel inferior. Observa lo que
se muestra en el Editor de Visual Basic al colocar un punto
después del objeto Application:
LAS COLECCIONES DE
OBJETOS WORKBOOKS Y
WORKSHEETS
Un objeto en VBA puede contener otro objeto y ese objeto a su
vez puede contener otro objeto y así sucesivamente. La raíz de
todos los objetos en VBA se encuentra en el objeto
Application el cual a su vez contiene las colecciones de
objetos Workbooks y Worksheets.
EL OBJETO WORKBOOK Y EL OBJETO
WORKSHEET
El objeto Workbook representa un libro de Excel y el objeto
Worksheet representa una hoja de un libro de Excel. Como
sabemos, un libro de Excel puede tener más de una hoja lo
cual significa que un objeto Workbook puede contener más de
un objeto Worksheet.
Filename:="C:Libro1.xlsx"
Application.Workbooks(1).Activate
Application.Workbooks("Libro1.xlsx").Activate
Application.Workbooks(1).Worksheets(1).Range("A1")
.Value = "Hola"
Application.Workbooks(1).Worksheets("Hoja1").Range
("A1").Value = "Hola"
Application.Workbooks("Libro1.xlsx").Worksheets.Ad
EL OBJETO APPLICATION
EN VBA
Cuando escribimos macros con VBA trabajamos con múltiples
objetos que pueden ejecutar nuestras instrucciones
adecuadamente, pero el objeto Application está en el nivel más
alto de la jerarquía del modelo de objetos de Excel.
El objeto Application simboliza a Excel mismo y nos da
acceso a opciones y configuraciones a nivel de la aplicación.
Muchas de las opciones que podemos modificar con el objeto
Application son las mismas que encontramos en la ficha
Archivo dentro del cuadro de diálogo Opciones de Excel.
Ya que el objeto Application es el objeto principal dentro de
VBA todos los demás objetos derivan de él. Es por ello que
encontrarás frecuentemente instrucciones que comienzan
especificando el objeto Application:
Application.Columns(5).Select
Application.Rows(5).Select
de impresiones:", _
EL LIBRO DE MACROS
PERSONAL EN EXCEL
Cuando creamos una macro en Excel podemos guardarla en el
libro actual o podemos guardarla en el libro de macros
personal. La ventaja de guardar una macro en el libro de
macros personal es que nuestra macro estará disponible para
cualquier libro.
El libro de macros personal es en realidad un archivo oculto
llamado PERSONAL.XLSB y que es cargado cada vez que
iniciamos Excel. Si tienes Windows 7 podrás encontrar el
archivo personal.xlsb en la siguiente carpeta:
C:Usuarios[Usuario]AppDataRoamingMicrosoftExcelXLS
TART
TIPOS DE ERRORES EN
VBA
No todas las cosas funcionan bien a la primera y seguramente
te encontrarás con errores al programar en Excel. Existen
dos tipos de errores en VBA: errores de sintaxis y errores en
tiempo de ejecución.
ERRORES DE SINTAXIS EN VBA
Un error de sintaxis ocurre cuando tenemos un error con el
lenguaje VBA, es decir, cuando intentamos hacer algo que no
está permitido. Este tipo de errores son los más fáciles de
localizar porque el Editor de Visual Basic está configurado para
avisarnos en el momento en que encuentra un error de este
tipo en nuestro código.
Este tipo de errores son mas difíciles de encontrar pero aun así
se podrán encontrar algunos de ellos al hacer pruebas y
depuración de nuestra aplicación. Algunos ejemplos de este
tipo de errores son los siguientes:
DEPURAR MACROS EN
EXCEL
Cuando nos encontramos con errores en nuestras macros
podemos depurar el código utilizando el Editor de Visual Basic
para encontrar fácilmente los errores que pueda contener
nuestro código VBA. Considera la siguiente macro:
PROGRAMACION
VARIABLES EN VBA
Cuando programamos en VBA frecuentemente necesitamos un
repositorio para almacenar el resultado de alguna operación.
Las variables en VBA son utilizadas para guardar valores y su
tipo dependerá de la clase de dato que deseamos guardar
dentro de ellas.
En VBA existen variables de tipo entero que almacenan
números, variables de tipo doble que también almacenan
números pero con decimales, variables de tipo texto para
guardar una cadena de caracteres entre algunos otros tipos de
variables. A continuación haremos una revisión de cada uno de
estos tipos.
x = 6
x = 3.1416
continuar = True
CADENAS DE TEXTO EN
VBA
Existen varias funciones en VBA que podemos utilizar para
manipular cadenas de texto. A continuación revisaremos
algunas de estas funciones VBA y observaremos el resultados
de cada una de ellas.
Para iniciar con esta revisión, debes colocar un botón de
comando dentro de una hoja de Excel y después hacer doble
clic sobre él para introducir el código.
UNIR CADENAS DE TEXTO
Para unir dos (o más) cadenas de texto podemos utilizar el
operador &. Observa el siguiente código:
LA FUNCIÓN RIGHT
La función Right nos permite extraer caracteres a la derecha de
una cadena de texto. Observa el siguiente código:
En esta función la cuenta de caracteres se hace de derecha a
izquierda siendo el último carácter de la cadena de texto el
primero que extraerá la función Right. Para este ejemplo he
pedido los últimos 5 caracteres a la derecha de la cadena de
texto:
LA FUNCIÓN LEN
La función Len nos ayuda a conocer la longitud de una cadena
de texto, es decir, la cantidad de caracteres que conforman a
una cadena.
LA FUNCIÓN MID
Con la función Mid podemos extraer una subcadena de otra
cadena de texto con tan solo especificar la posición inicial de la
subcadena y su longitud. Observa el siguiente ejemplo:
LA DECLARACIÓN IF-THEN
EN VBA
En ocasiones necesitamos ejecutar algunas líneas de código
de nuestra macro solamente cuando alguna condición se haya
cumplido. La declaración If-Then nos permite validar una
condición para tomar una decisión adecuada.
La sentencia If-Then en VBA es la más básica de todas las
declaraciones de control de flujo que son aquellas
declaraciones que nos permiten tomar decisiones en base a
una condición. Esta declaración la podemos traducir como Si-
Entonces y la utilizaremos en situaciones donde necesitamos
realizar la siguiente evaluación: Si se cumple la
condición Entonces haz esto.
EJEMPLO DE LA DECLARACIÓN IF-THEN
Para probar el funcionamiento de la declaración If-Then inserta
un botón de comando (Control ActiveX) en una hoja de Excel y
haz doble clic sobre él para colocar el siguiente código:
En el primer paso se hace la declaración de las variables
que utilizaré en el resto del código.
En el segundo paso asigno el valor de la celda A1 a la
variable calificación.
El tercer paso contiene la declaración If-Then y que
prueba Si el valor de la variable calificación es mayor o
igual a 60. En caso de ser verdadero Entonces se asigna
el valor “Aprobado” a la variable resultado.
El último paso es asignar el valor de la
variable resultado a la celda B2.
Ahora observa el resultado al ejecutar esta macro.
LA DECLARACIÓN IF-THEN-ELSE
Parece que todo funciona muy bien en el código anterior pero
aún lo podemos mejorar agregando la declaración Else de
manera que tengamos una declaración de la forma If-Then-
Else. Esta variante nos permite hacer la siguiente evaluación:
Si se cumple la condición Entonces haz esto De lo
contrario haz otra cosa.
La declaración Else en VBA nos permite indicar otro bloque de
instrucciones que se deben ejecutar en caso de que la
condición sea falsa. De esta manera podemos tomar una
acción determinada en caso de que la condición se cumpla o
en caso de que no se cumpla. Ahora modificaré el ejemplo
anterior para asegurarme de que en caso de que la condición
de calificación mayor o igual a 60 no se cumpla se despliegue
el resultado “reprobado”. Observa el siguiente código.
En el tercer paso puedes observar la declaración If-Then-Else.
Ahora observa el efecto de este cambio al momento de ejecutar
el código:
Range("B5").Select
Cells(5, 2).Select
SELECCIONAR UN RANGO
Para seleccionar un rango de celdas lo más conveniente es
utilizar el objeto Range de la siguiente manera:
Range("A1:D5").Select
Range("B5").Value = 500
For i = 1 To 10
For j = 1 To 5
Cells(i, j).Value = i * j
Next j
Next i
EL BUCLE FOR-NEXT EN
VBA
En términos de programación, un bucle es una instrucción que
nos permitirá ejecutar repetidamente un conjunto de
instrucciones hasta que se cumpla la condición que hayamos
especificado. Los bucles también son conocidos como ciclos.
LA INSTRUCCIÓN FOR-NEXT
El bucle For-Next es una de las instrucciones más útiles al
programar en VBA. La sintaxis de esta instrucción es la
siguiente:
OPERADORES LÓGICOS
EN VBA
Los operadores lógicos más comunes en VBA son: And y Or.
Cada uno de estos operadores es de mucha utilidad para
evaluar condiciones y tomar decisiones adecuadas sobre el
código que será ejecutado.
EL OPERADOR LÓGICO AND
El operador lógico And es el operador que nos ayuda a forzar
el cumplimiento de dos condiciones. Este operador lo
traducimos como “Y” de manera que para ejecutar un bloque
de código se debe cumplir la condición1 Y la condición2.
En el siguiente ejemplo tengo la calificación de dos exámenes.
Solamente si ambos exámenes tienen una calificación mayor a
70, entonces el estudiante será aprobado, de lo contrario la
calificación será reprobatoria.
EVENTOS EN VBA
Los eventos en VBA nos ayudan a monitorear las acciones
que realizan los usuarios en Excel de manera que podamos
controlar la acción a tomar cuando el usuario hace algo
específico como el activar una hoja o hacer clic en alguna
celda.
EJEMPLOS DE EVENTOS EN VBA
Algunos ejemplos de eventos en VBA son los siguientes:
WorkbookOpen: El usuario abre un libro de Excel.
WorkbookActivate: El usuario activa un libro de Excel.
SelectionChange: El usuario cambia la selección de
celdas en una hoja.
Para descubrir los eventos que tiene un objeto es suficiente
con abrir el Editor de Visual Basic y posteriormente el
Examinador de objetos (F2). En el panel izquierdo se mostrarán
los objetos y en el panel derecho las propiedades, métodos y
eventos de dicho objeto. Podrás distinguir los eventos porque
tienen un icono en forma de rayo (color amarillo):
ARREGLOS EN VBA
Los arreglos en VBA pueden ser entendidos como un grupo
de variables contenidas dentro de otro repositorio. Dentro de un
arreglo podemos referirnos a un valor específico (elemento)
utilizando su posición (índice).
Para comprender mejor lo que es un arreglo observa la
siguiente imagen:
Paises(1) = "Argentina"
Paises(2) = "Colombia"
Paises(3) = "España"
Paises(4) = "México"
Paises(5) = "Perú"
MsgBox Paises(3)
FUNCIONES VBA
El lenguaje de programación VBA contiene un número
considerable de funciones que podemos utilizar para construir
código en Excel. Cuando estás escribiendo código, puedes
introducir la palabra VBA seguida de un punto y verás una lista
desplegable de estas funciones.
La siguiente tabla provee una descripción breve de algunas de
las funciones VBA más utilizadas.
FUNCIÓN DESCRIPCIÓN
Asc Obtiene el valor ASCII del primer caracter de una cadena de texto
InStrRev Regresa la pocisión de una cadena de texto dentro de otra cadena pero empezand
Join Regresa una cadena de texto creada al unir las cadenas contenidas en un arrreglo
Split Regresa un arreglo formado for cadenas de texto que formaban una sola cadena
Trim Remueve los espacios en blanco al inicio y final de una cadena de texto
TypeName Obtiene el nombre del tipo de dato de una variable
CONTROLES
CONTROLES DE
FORMULARIO EN EXCEL
Los controles de formulario en Excel son objetos que
podemos colocar dentro de una hoja de nuestro libro, o dentro
de un formulario de usuario en VBA, y nos darán funcionalidad
adicional para interactuar mejor con los usuarios y tener un
mejor control sobre la información.
Podemos utilizar estos controles para ayudar a los usuarios a
seleccionar elementos de una lista predefinida o permitir que el
usuario inicie una macro con tan solo pulsar un botón.
Los controles de formulario en Excel se encuentran dentro
de la ficha Programador dentro del grupo Controles. Solamente
pulsa el botón Insertar y observarás cada uno de ellos:
CONTROLES ACTIVEX EN
EXCEL
Los controles ActiveX son un tipo de controles que nos
permiten agregar funcionalidad de formularios a nuestros libros
de Excel. Existe otro tipo de controles que es conocido
como Controles de formulario y que tienen una funcionalidad
similar, sin embargo existen algunas diferencias entre ambos
tipos.
CONTROLES ACTIVEX Y CONTROLES DE
FORMULARIO
Los controles de formulario fueron introducidos desde la
versión 4 de Excel y por lo tanto han estado presentes en la
aplicación por más tiempo que los controles ActiveX los cuales
comenzaron a ser utilizados a partir de Excel 97. Ya que los
controles ActiveX fueron introducidos posteriormente ofrecen
más posibilidades de configuración y formato que los controles
de formulario. Ambos tipos de controles se encuentran en la
ficha Programador.
CUADRO DE TEXTO EN
EXCEL
El cuadro de texto es un control ActiveX que muestra un
campo vacío donde el usuario puede introducir cualquier texto.
En esta ocasión revisaremos cómo incrustar un cuadro de texto
y hacer referencia al mismo desde código VBA.
INSERTAR UN CUADRO DE TEXTO EN
EXCEL
Para insertar un cuadro de texto en una hoja de Excel debes ir
a la ficha Programador y hacer clic en el botón Insertar y
entonces hacer clic sobre la opción Cuadro de texto de la
sección Controles ActiveX.
El puntero del ratón se convertirá en una cruz la cual nos
permitirá dibujar el cuadro de texto sobre la hoja de Excel.
Una vez dibujado el cuadro de texto podrás hacer clic derecho
sobre él y seleccionar la opción Propiedades para conocer el
nombre que la ha sido asignado.
CUADRO COMBINADO EN
VBA
Excel tiene un control ActiveX conocido como Cuadro
combinado el cual también es llamado comúnmente por su
nombre en inglés: Combo Box. Este control nos permite crear
listas desplegables en nuestros formularios.
Para insertar un Cuadro combinado debemos ir a la ficha
Programador y dentro del botón Insertar pulsar el
comando Cuadro combinado (control ActiveX):
Después de dibujar el Cuadro combinado tendrás un
resultado como el siguiente:
Range("C4").Value = CheckBox1.Value
End Sub
= 0
BOTÓN DE OPCIÓN EN
VBA
Un botón de opción es un control ActiveX que nos permitirá
seleccionar una sola opción dentro de un grupo de botones de
opción. A diferencia de las casillas de verificación, los botones
de opción dependen uno del otro.
EL BOTÓN DE OPCIÓN EN EXCEL
Para insertar un botón de opción hacemos clic en el comando
Insertar de la ficha Programador.
Un solo botón de opción no hace mucho sentido, así que
siempre agregamos dos o más botones de opción para
permitir que usuario haga una selección de cualquiera de ellos.
FORMULARIOS EN VBA
Los formularios en VBA no son más que un cuadro de diálogo
de Excel donde podremos colocar controles que nos ayudarán
a solicitar información del usuario. Podremos colocar cajas de
texto, etiquetas, cuadros combinados, botones de comando,
etc.
CREAR UN FORMULARIO EN EXCEL
Los formularios de Excel son creados desde el Editor de
Visual Basic donde debemos seleccionar la opción de menú
Insertar y posteriormente la opción UserForm.
Unload Me
End Sub
Worksheets("Hoja1").Range("A1").Value =
Me.TextBox1.Value
Worksheets("Hoja1").Range("B1").Value =
Me.TextBox2.Value
Worksheets("Hoja1").Range("C1").Value =
Me.TextBox3.Value
End Sub
UserForm1.Show
End Sub
PROBAR EL FORMULARIO
Observa cómo cada uno de los botones realiza la acción
correcta al pulsarlos: