Вы находитесь на странице: 1из 72

CREACIN DE UNA

MACRO SENCILLA EN
EXCEL PARA TAREAS
RUTINARIAS
09/03/2012
BY BRAIS KOECKLIN
4 COMMENTS

Excel es una potente herramienta de


hoja de clculo, diseada para lo que su nombre indica calcular, pero
siempre, lo que ms tiempo nos roba, es la introduccin de datos y el diseo
de los mismo, es decir: cmo los mostramos finalmente.

Uno de los principales enemigos con los que tendremos que batallar es la
importacin de datos desde otro programa. Veamos un ejemplo: trabajamos
con una aplicacin en la que una serie de vendedores nos van indicando el
nmero de ventas que realizan, y al finalizar el mes, tenemos que pasarle a
nuestro superior una tabla informativa, pero la aplicacin que usan los
vendedores no es Excel, aunque s nos permite exportar a dicho formato.
Aunque no sea el mejor ejemplo del mundo, es claro para todos.
Continuemos.

La maravillosa aplicacin que utilizan los comerciales, vendedores, etc. nos


extrae esta tabla, que como veris, slo nos muestra los datos, sin ningn tipo
de formato, y esto, por as decirlo: no es presentable a nadie.
Y lo que hacemos mes a mes, es enviarle algo as a nuestro superior:
Ms bonito, visual, corrigiendo los formatos de fechas, y aadiendo un
promedio de ventas/da en cada vendedor, con un formato condicional para
que muestre los semforos en relacin a las ventas entre ellos (Verde: ms
ventas; Rojo: menos ventas; mbar: la media). Para que este promedio salga
correctamente, hemos tenido que eliminar los 0 en los fines de semana (das
en los que no hay servicio de ventas).

Todas estas acciones, que hacemos mes a mes, realmente no nos comen
mucho tiempo, no ms de 5 minutos salvo que nos lo pidan diario o
semanal, tengamos varios grupos de vendedores Estoy seguro de que este
pequeo tutorial te ser de mucha ayuda para tus tareas.

Vamos con algo de accin.

Localicemos la pestaa de Programador en Excel 2007. Si no la tienes


activa, haz clic en este otro enlace para ensearte a hacerlo en Office 2007 y 2010.

Y ahora, a la izquierda, veremos varias opciones la que nos interesa: Grabar


Macro.

Es cierto que hay mucha gente que programa sus macros para tareas ms
complejas, pero este tutorial no es para esa gente es para todo el mundo que
empieza con excel o que no tiene muchas tablas en el asunto. La mejor manera
de empezar es grabando una Macro.

Antes de grabar la Macro, vamos a preparar un poco nuestra tabla


simplemente vamos a bajar los datos, salvo los ttulos, dejando 3 filas vacas
encima de los datos de los vendedores. De la siguiente forma:
Motivo? Simple las semanas comienzan en lunes, y el primer da del que
tenemos datos es jueves, as que dejamos espacio para esos das. En este mes
no nos servir para nada, pero s para futuros meses, ya le dejamos espacio.
En el futuro, slo tenemos que pegar los datos empezando en el da que sea
necesario.

Ahora s, vamos con la Macro.

Cuando pulsamos el botn Grabar Macro, nos aparecer esta ventana:

Vamos a ponerle el nombre. Para esto, Office es un poco especialito, dado


que:

El primer carcter del nombre de la macro debe ser una letra.


Los dems caracteres pueden ser letras, nmeros o caracteres de
subrayado.

No se permiten espacios en un nombre de macro; puede utilizarse un


_ como separador de palabras.

No puedes utilizar un nombre de macro que tambin sea una referencia


de celda; de lo contrario puede aparecer un mensaje indicando que el
nombre de la macro no es vlido.

Llamemos a nuestra macro: Estilo_informe, y le indicaremos que nos lo


guarde en Libro de macros personal, as lo tendremos disponible en
cualquier hoja de Excel que abramos.

Desde el momento en que pulsemos el botn Aceptar, Excel comenzar a


grabar todas nuestras acciones, que sern las que programen nuestra macro,
as que vayamos con cuidado para no tener que repetir acciones, o borrar la
macro.

Sigamos estos pasos:

1. Le damos formato a la fecha, para que se muestre como ms te guste


(si indicas que te muestre el nombre, podrs identificar rpidamente los
fines de semana).

2. Coloreamos la tabla a nuestro gusto. Yo diferencio das de la semana y


fin de semana, para ver grupos de das ms cmodamente. Tambin le
pongo las celdas que no uso en color blanco para darle un aspecto ms
limpio pijadas personales.

3. Quitamos los 0 de los fines de semana para que el promedio nos


salga correctamente.

4. Aadimos una nueva tablita, debajo de la grande, que sea resumen


del nmero de ventas y el promedio de ventas/da de cada vendedor. A
la derecha de la tablita aadimos los totales. Como el mes que hemos
escogido es de 31 das, en el futuro no tendremos que mover la tabla,
dado que no habr meses de ms de 31 das.

5. Coloreamos esta tablita en el estilo de la tabla superior.

Hemos terminado, ahora le damos al botn Detener Macro, y listo.


Ahora, cada vez que queramos dar forma a nuestra tabla extrada del
programa de los vendedores, lo nico que tendremos que hacer ser dejar X
filas vacas encima de los datos en relacin al da de la semana con que
empiece el mes, y llamar a nuestra macro para que haga su trabajo. Nos
vamos a la Pestaa Programador y le damos al botn de Macros, y escojemos
la nuestra de la lista. Puede que tengas que desplegar el men de Macrosen:.

Si nos damos cuenta, lo nico que hemos hecho a mayores de la preparacin


de nuestro informe ha sido grabar una Macro que ha guardado todas las
acciones que hemos hecho.

Cada uno le encontrar una utilidad diferente, y programar una macro


diferente dependiendo de sus necesidades, pero desde luego todos coincidirn
en que es una herramienta imprescindible para el ahorro de tiempo en las
tareas ms rutinarias.

Podemos programar macros para eliminar contenido en un clic.

o Por ejemplo, si el programa de vendedores extrae las tablas


perfectas, podemos simplemente eliminar los 0 y aadir
nuestra tabla resumen.

Podemos programar macros para dar un formato determinado.


Podemos programar macros para que nos creen grficos obteniendo
datos de un rango determinado.

Podemos asignar una macro a un botn o una imagen para no tener que
buscarla en la Pestaa Programador.

Podemos

Podemos hacer lo que todos queremos hacer hacer ms en menos tiempo, e


invertir el restante en cosas ms placenteras o productivas al fin y al cabo,
la procrastinacin est ah para hacer uso de ella de vez en cuando, no va a ser
todo trabajar o estudiar, no?

COMPRTELO:

http://www.educadictos.com/creacion-de-una-macro-sencilla-en-excel-para-
tareas-rutinarias/
aprendiendo
excel
interactivo
TUTORIAL DE EXCEL TUTORIAL DE EXCEL >
o Filtros
o Funcin Si Introduccin a Macros
o Grficos estadsticos
o Introduccin a Macros
o Tablas Dinmicas y Grficos
Dinmicos
Mapa del sitio
Qu es una macro de Excel?
Si utilizas Excel frecuentemente es posible que en alg
repetidas veces se podran automatizar con una macr

Una macro es un conjunto de comandos que se alma

Por ejemplo, si todas las maanas creas un reporte d


automticamente por ti. Las macros se utilizan princip

Un lenguaje de programacin
Las macros se escriben en un lenguaje de computado
prcticamente todas las funcionalidades de Excel y co

Pero no te preocupes si no eres un programador de c


detalles del lenguaje de programacin.
Aunque si aceptas el desafo y te introduces en el mu
tan complicado y ser una manera fcil y rpida de el

Para qu sirve una macro en Exc


Una macro nos ayuda a automatizar aquellas tareas q
Excel para poder ser ejecutadas cuando lo necesitem

Automatizacin de tareas
Seguramente ests familiarizado con procesos de aut
existen robots que han sustituido tareas que antes era
mejor aprovechamiento del tiempo del personal al red

De la misma manera las macros nos ayudan a elimina


datos y en la toma de decisiones.

Cmo se ve una macro en Excel?


Las macros son escritas en un lenguaje de computad
computadora debemos aprender a utilizar los comand
Aprender el lenguaje VBA no es nada complicado y s
que quiero decir con esto es que para ser un buen pro
lenguaje VBA.

Creacin de una macro


Las macros se crean con el Editor de Visual Basic el c

Existe otro mtodo que es utilizar la Grabadora de ma


grabada la macro podremos reproducir de nuevo las

Ahora que ya sabes para qu sirve una macro en E

La grabadora de macros en Excel 2010


La grabadora de macros almacena cada accin que
acciones innecesarias mientras se realiza la grabaci
Al pulsar el botn se mostrar el cuadro de dilogo G

En el cuadro de texto Nombre de la macro debers c


asignar un mtodo abreviado de teclado el cual permi

La lista de opciones Guardar macro en permite selec

Este libro. Guarda la macro en el libro actual.

Libro nuevo. La macro se guarda en un libro nuev

Libro de macros personal. Esta opcin permite ut

Tambin puedes colocar una Descripcin para la mac


ejecutar las acciones planeadas debers pulsar el bot
Crear una Macro
En esta ocasin mostrar cmo crear una macro en
bsico de creacin.

Voy a crear una macro que siempre introduzca el no


grabacin debes ir al comando Grabar macro que se

Observa cmo he colocado un nombre a la macro y a


Aceptar se iniciar la grabacin. Observa con detenim
Al terminar los pasos se pulsa el comando Detener gr
de Excel y seleccionar el comando Macros.
Al pulsar el comando Macros se mostrar la lista de t
se realizarn todas las acciones almacenadas en la m
entonces se omitir este ltimo cuadro de dilogo.

El cdigo de la Grabadora de Mac


na manera muy interesante de descubrir y aprender m
una macro muy sencilla que solamente cambie el colo

Para comenzar debemos ir a la ficha Programador y p


estoy por crear.
Pulsa el botn Aceptar y se comenzarn a grabar toda
grabando solo har lo siguiente: ir a la ficha Inicio y p

Una vez hecho esto debo detener la grabacin de la m

Ahora que ya hemos generado la macro, pulsa el bot


que enlista todas las macros que hemos creado.

Selecciona la macro recin creada y pulsa el botn M

Observando este cdigo podemos aprender varias co


referencia a la fuente de la celda o rango seleccionad
nuestra celda.

Aunque este ha sido un ejercicio muy sencillo, cuando


macros para darte una idea del camino a seguir.
Video Tutorial de Macros 2013

Cuando y porque se usa

Una macro se usa cuando un conjunto de comandos que s

Se usa porque nos ayuda a automatizar aquellas tareas qu


poder ser ejecutadas cuando lo necesitemos.

Ejercicios de refuerzo:

1) Macro para redondear decimales

En concreto para el caso de un libro de Excel que ten

Vas al men Herramientas y de aqu a Macro y eliges


ser un nombre que no empiece por un numero y que n

A partir de ah realizas las acciones a automatizar: Se


finalizar vamos a Herramientas, Macro y Detener Gra

Para guardar la Macro vas a Guardar Como desde Ar

A partir de ahora cada vez que quieras que los datos


Macros..., seleccionas la macro RedondearCifras y da

2) Macro para cambiar la impresora asignada por defec

En este caso lo que realizars es la serie de pasos pa


otra de las impresoras existentes.

Asigna el nombre Imprimir_Impresora2 y realiza la se

Prueba tu macro con Ejecutar.

En relacin con esta macro tambin te sugiero realiza


la macro con el nombre Imprimir_ByN.

Existen multitud de posibilidades a la hora de automa

3) Macro para crear un Men Principal

Crear un Men Principal y dentro de este crear dos botone


con su respectiva nota y dentro de esta hoja de excel crea
segundo botn que diga "ir a notas estudiantes" al hacer c
esta hoja de excel que haya un botn que se llame "ir a me

Comentarios

No tienes permiso para aadir comentarios.

https://sites.google.com/site/aprendiendoexcelinteractivo/home/introduccion
-a-macros
Excel: Una macro para la
combinacin de correspondencia
Un problema interesante es el de generar copias de una planilla
cambiando algunos datos, tomados de una lista en otra planilla. Algo
parecido a la combinacin de correspondencia de Word. Aunque no
existe un comando equivalente en Excel, lo podemos simular
mediante una macro.
Jueves, 2 de Julio de 2015

Supongamos que tenemos dos planillas. La primera es la lista de gastos de un edificio. La


segunda contiene la lista de vecinos de ese mismo edificio. Queremos imprimir copias de
la primera planilla, para cada uno de los integrantes de la segunda. Los datos de cada
vecino, deben aparecer en las primeras filas de cada copia.

Digamos, por simplicidad, que la lista de gastos est en una hoja llamada Gastos y tiene
solamente dos columnas: rubro e importe. Esta lista ocupa el rango [A5:B15], con los
ttulos en la quinta fila y los datos propiamente dichos a partir de la siguiente. En las
primeras filas de la hoja aparecern los datos de cada vecino, acompaados de ttulos
adecuados:

En [A1] escribimos Titular.

En [A2] escribimos Departamento.

En [A3] escribimos Importe.

La lista de vecinos est en una hoja llamada Titulares y tiene tres columnas: piso y
departamento, nombre y apellido, y porcentaje de los gastos que le toca pagar a cada uno.
Esta lista ocupa el rango [A1:C15], con el importe total calculado en [C16], debajo del
ltimo importe.

La macro que generar e imprimir las copias deber recorrer la lista de vecinos y, para
cada uno de ellos, hacer dos cosas:

Copiar los datos del titular en [B1:B3].

Imprimir la copia.

En principio, esta macro debera ser ms o menos as:

Sub Expensas()

Sheets(Gastos).Select

ActiveSheet.PageSetup.PrintArea = A1:D14

For i = 2 To 15

depto = Sheets(Titulares).Cells(i, A)

nombre = Sheets(Titulares).Cells(i, B)

porcentaje = Sheets(Titulares).Cells(i, C)

[B1] = nombre

[B2] = depto

[B3] = porcentaje * [B14]

ActiveSheet.PrintOut

Next

End Sub

Expliquemos paso a paso esta macro. Antes de comenzar el recorrido de la lista de


titulares, la macro hace dos cosas que tiene que hacer una sola vez al comenzar a
trabajar: pararse en la hoja a imprimir (la lista de gastos) y establecer el rango de
impresin:

Sheets(Gastos).Select

ActiveSheet.PageSetup.PrintArea = A1:D14
Luego comienza el recorrido de la lista de titulares con un ciclo For Next. Como la lista
de titulares ocupa siempre el mismo rango, sabemos que este recorrido debe hacerse
desde las filas 2 a la 14, que es donde estn los datos propiamente dichos de los titulares.

Para cada vuelta del ciclo, la macro toma nota de los datos del titular: nmero del
departamento, nombre y apellido del titular y porcentaje de gastos. Como esto lo hace
desde la otra hoja, la de gastos, la referencia a las celdas de la hoja Titulares tiene tres
coordenadas. Por ejemplo, para el nmero de departamento:

depto = Sheets(Titulares).Cells(i, A)

El argumento de Sheets es el nombre de la hoja, escrito entre comillas. Tambin podra ser
el nmero de orden de la hoja en el libro. En este caso, Sheets(2). Separada por un punto,
aparece la instruccin Cells cuyos dos argumentos son la fila y la columna de la celda. La
columna puede indicarse con su letra, escrita entre comillas, o por un nmero: 1 para la A,
2 para la B y as sucesivamente. En la macro hay tres instrucciones de este tipo, una para
cada titular.

Luego copia estos datos a la hoja de gastos. Como esta es la hoja actual, sus celdas
pueden designarse de manera ms simple: se escriben las coordenadas entre corchetes.
Adems, el importe a pagar se obtiene multiplicando el importe total tomado de la celda
[B14] por el porcentaje tomado antes de los datos de los titulares:

[B1] = nombre

[B2] = depto

[B3] = porcentaje * [B14]

Finalmente, la macro procede a la impresin de la hoja con la instruccin:

ActiveSheet.PrintOut

Mientras estamos probando la macro, y para no desperdiciar papel, podemos reemplazar


esta instruccin por la que hace la vista preliminar;

ActiveSheet.PrintPreview

Una vez impresa (o previsualizada) esta hoja, la instruccin Next pasa a la siguiente vuelta
del ciclo, y la siguiente fila de la lista de vecinos. As hasta imprimir todas las copias.

http://www.redusers.com/noticias/trucos/excel-una-macro-para-la-
combinacion-de-correspondencia/
Megagua: Macros y VBA

A grandes rasgos, VBA es un lenguaje de programacin orientado a


objetos con el que puedes crear automatizaciones de tareas.

Se trata de una versin de Visual Basic, instalada por defecto en las


aplicaciones de Office y que permite programar objetos para modificar
su aspecto y las acciones que pueden realizar con ellos.

La diferencia ms notable entre VBA y VB es que con VB es posible crear


aplicaciones ejecutables y VBA solamente se puede utilizar dentro del
entorno de Office.

Qu es una macro?
Se puede definir como un bloque de instrucciones ejecutable y que se
almacena en un mdulo. Al ejecutar una macro, se interpretan las lneas
de cdigo que contiene y se desencadenan las acciones escritas.

Puedes utilizar una macro para acelerar las tareas frecuentes con Excel
y ampliar su utilidad, creando, por ejemplo, nuevas funciones para
resolver clculos que de otra forma sera imposible realizar.

Existen tres formas de crear una macro:

Con la grabadora de macros.


Con el editor de VBA.
Con una combinacin de las anteriores.

La forma ms rpida de crear una macro es utilizar la grabadora, ya que


no es necesario saber VBA.
Lo que hace la grabadora de macros es guardar todas y cada una de las
acciones que vas realizando. Estas acciones se graban paso a paso hasta
que se detiene la grabacin. Mientras vas realizando acciones, la
grabadora las convierte en lenguaje VBA.

El uso de la grabadora de macros es muy sencillo para crear macros


fciles, pero cuando quieres crear algo ms complejo, tienes que utilizar
el lenguaje de programacin.

Programacin orientada a objetos


Ms arriba he hablado de este concepto pero, sabes qu significa?

Un libro de Excel est lleno de objetos que se organizan mediante una


jerarqua. La programacin orientada a objetos se basa en la
modificacin de las propiedades y los mtodos de estos objetos para que
realicen las acciones que quieras.

En el mundo real, un objeto es algo tangible, como puede ser un coche o


un gato y se identifica porque tiene propiedades y mtodos. Se considera
que las propiedades son las caractersticas y los mtodos son las
acciones que puede realizar. En un coche, una propiedad sera el color y
un mtodo sera la posibilidad de girar el volante hacia la izquierda.
Excel cuenta con ms de 200 objetos. Cada elemento de Excel es un
objeto. Un libro (Workbook), una hoja (Worksheet), un grfico (Chart) o
una tabla dinmica (PivotTable) son algunos ejemplos de objetos dentro
del modelo de Excel.

Muchos de los objetos se agrupan en colecciones. En el caso del objeto


coche, una coleccin representara todos los coches del mundo. En
cuanto a Excel, la coleccin Workbooks hara referencia a todos los
libros de Excel abiertos.

Como te digo, los objetos del modelo de Excel estn organizados por
jerarquas, que significa que unos objetos pueden contener a otros
objetos.

El ejemplo ms descriptivo para que entiendas este concepto es el


siguiente:

Cuando abres el programa Excel, en realidad ests abriendo el


objeto Application y al mismo tiempo ests abriendo un libro en blanco
representado por el objeto Workbook. Este libro contiene una hoja
activa, representado por el objeto Worksheet, que a su vez contiene un
conjunto de celdas, representado por el objeto Range.
Gracias a esta organizacin puedes hacer referencia a cualquiera de los
objetos siguiendo la posicin jerrquica que ocupa dentro del modelo de
objetos.

Por ejemplo, para hacer referencia al libro Ventas anuales.xlsx habra


que hacerlo de la siguiente forma:

Application.Workbooks (Ventas anuales.xlsx)

Si quisieras seleccionar la celda B2 de la hoja Totales del libro Ventas


anuales.xlsx, tendras que hacerlo siguiendo toda la jerarqua:

Application.Workbooks(Ventas anuales.xlsx). _
Worksheets(Totales).Range(B2).Select

La instruccin anterior se puede simplificar en la mayora de los casos


omitiendo el objeto Application. Esto es posible porque la instruccin
est creada dentro de Excel (Application).

Workbooks(Ventas anuales.xlsx). _
Worksheets(Totales).Range(B2).Select

Como ves, si el objeto de mayor rango es el objeto activo, puedes


omitirlo de la referencia. Si tienes activo el libro Ventas anuales.xlsx,
podras seleccionar la celda B2 de la siguiente forma:

Worksheets(Totales).Range(B2).Select

Bajando un poco ms por la jerarqua, si la hoja activa fuese Totales,


podras seleccionar la celda B2 as:

Range(B2).Select

Como he dicho antes, todos los objetos del mismo tipo forman una
coleccin. Las colecciones permiten trabajar con un grupo de objetos
como si de un solo objeto se tratara. Normalmente, el nombre de una
coleccin es el objeto en plural de los objetos que contiene.

Por ejemplo, Worksheets es el nombre de la coleccin que rene todos


los objetos Worksheet.
Debes entender que una coleccin es siempre dinmica, ya que se
pueden agregar o eliminar objetos, como en el caso de las hojas de un
libro.

Para hacer referencia a un objeto dentro de una coleccin, puedes


utilizar los siguientes mtodos:

Coleccion!Objeto
Coleccion![Objeto]
Coleccion(Objeto)
Coleccion(var)
Coleccion(index)

Var es una variable del tipo String que contiene el nombre del
objeto. Index es el nmero de la posicin que ocupa el objeto dentro de
la coleccin.

Propiedades, mtodos y eventos de los


objetos de Excel
Al principio coment que la programacin orientada a objetos se basaba
en la modificacin de las propiedades y mtodos de los objetos.
Las propiedades son las caractersticas propias del objeto, que hace que
se distinga de otros objetos (nombre, tamao, color, ubicacin en la
pantalla)

Por ejemplo, propiedades del objeto Range pueden ser Name (nombre),
Value (valor) y Column (columna), entre muchos otros.

El uso de las diferentes propiedades te permitir modificar las


caractersticas del objeto. Por ejemplo, puedes utilizar la
propiedad Value para modificar el valor que se muestra en una celda.
Tambin es posible utilizar las propiedades para modificar el aspecto de
un objeto. Por ejemplo, la propiedad Borders permite cambiar el borde
de la celda.

Algunas propiedades pueden ser a su vez objetos. Por ejemplo, si


quieres cambiarle el tipo de fuente al objeto Range debes utilizar la
propiedad Font. Como las fuentes tienen diferentes nombres, tamaos o
estilos, existen otras propiedades que califican a la propiedad Font.

Por ejemplo, si quieres cambiarle el tamao de fuente a la celda B2,


debes escribir lo siguiente:

Range(B2).Font.Size = 25

Por su parte, se denominan mtodos a las acciones que puedes hacer


con un objeto. Se puede decir que son rdenes que se le dan a los objetos
para que haga algo sobre s mismo. De esta forma, el objeto Range tiene
los mtodos Activate (activar) y Clear(borrar), entre muchos otros.

La implementacin de un mtodo en el objeto es muy sencilla. Esta es la


sintaxis:

Objeto.Mtodo

De esta forma, si quieres seleccionar la celda B2 de la hoja activa,


tendras que utilizar la siguiente instruccin:
Range(A2).Select

Este es un ejemplo sencillo. Algunos otros mtodos admiten argumentos,


que son parmetros que permiten especificar mejor las opciones de la
accin que debe realizar el objeto. Por ejemplo, si quieres guardar el
libro actual con el nombre Ventas 2016 tienes que utilizar la siguiente
instruccin:

ThisWorkbook.SaveAs Filename:=Ventas 2016.xlsm

Adems de las propiedades y los mtodos, algunos de los objetos


tambin pueden reaccionar ante eventos.

Un evento se da cuando sucede una determinada situacin. Por


ejemplo, abrir un libro, imprimir o cerrar una ventana son eventos.

Con VBA es posible programar acciones cuando se produce un evento.

Imagina que cada vez que abras un libro, quieres que aparezca un
mensaje de bienvenida. Para ello se debe trabajar dentro del evento
Open del objeto Workbook de la siguiente manera:

Private Sub Workbook_Open()


MsgBox Bienvenido!
End Sub

Aunque esto es algo complejo de entender, con un poco de prctica


conseguirs dominarlo.

La ficha Desarrollador
No encuentras la ficha Desarrollador en la cinta de opciones? Eso es
porque al instalar Excel, se encuentra oculta. Obviamente debes
mostrarla antes de comenzar a trabajar con ella.
Para mostrar la ficha te recomiendo que hagas clic con el botn derecho
en cualquier parte de la cinta de opciones y selecciones Personalizar la
cinta de opciones. A continuacin activa la casilla de verificacin
correspondiente en la parte de la derecha del cuadro de dilogo.

En la ficha Desarrollador (o Programador, segn la versin de Excel que


utilices) se encuentran los comandos que utilizars para gestionar los
complementos y los controles.

Si vas a programar macros te recomiendo que la tengas siempre visible


en la pantalla.

Formato de archivo para macros


La potencia que tienen las macros y el lenguaje VBA en general, hacen
que un Libro de Excel sea la puerta perfecta para que nuestros equipos
se infecten con virus.

Microsoft tom medidas hace ya varios aos para prevenir este uso
indebido de Excel, creando un formato de archivo especial para guardar
los libros que contienen macros. Adems, incluy varios niveles de
seguridad.

La extensin .xlsm fue la elegida para designar a los archivos con macros.
En las versiones anteriores a Excel 2007 era imperceptible a menos que
tuvieras habilitados los niveles de seguridad que respectan a las macros.
Ahora, con slo comprobar la extensin del libro podrs determinar si
contiene alguna macro y as decidir si quieres abrirlo o no, en funcin de
la confianza que te genere.

Siempre que abras un libro que contenga VBA, se mostrar de forma


predeterminada y debajo de la cinta de opciones un mensaje en el que se
indica que se han deshabilitado las macros.

Hace unos aos se pusieron de moda los virus dentro de macros. Estos
virus se aprovechaban de archivos aparentemente inofensivos para
hacer varios tipos de ataque.

Para poder trabajar con archivos que contienen macros, debes


configurar las restricciones de seguridad de Excel desde el Centro de
Confianza. Para ver qu configuracin tiene Excel en el momento, pulsa
en el botn Seguridad de macros que se encuentra en el
grupo Cdigo de la ficha Desarrollador.

El editor de VBA
El editor de Visual Basic for Applications es el lugar donde se
desarrollan, prueban y modifican las macros. Se ejecuta en una ventana
diferente a la de Excel y se accede a ella de estas tres formas:
Haciendo clic en el botn Visual Basic de la ficha Desarrollador.
Cuando ya existe la macro, pulsando el botn Modificar del cuadro
de dilogo Macros, que aparece al pulsar el botn Macros de la
ficha Desarrollador.
Pulsando Alt + F11.

La ventana del editor muestra todo lo necesario para comenzar a crear


una macro.

La barra de mens: Desde aqu se accede a la mayora de


funciones de VBE para desarrollar, comprobar y guardar las macros.
La barra de herramientas estndar: Contiene los botones con los
comandos ms utilizados.
La barra de herramientas de Edicin: Aqu se encuentran los
comandos ms tiles cuando se est escribiendo el cdigo.
El explorador de proyectos: Se muestra un rbol con todos los
archivos que se encuentran abiertos, que contienen los componentes de
los proyectos.
Ventana de cdigo: Es la que se emplea para escribir todo el
cdigo VBA. Cada elemento de un proyecto tiene asignada su propia
ventana de cdigo.
La ventana propiedades: permite cambiar las propiedades del
objeto seleccionado, mientras ests en Modo Diseo.
La ventana Inmediato: Permite probar una instruccin estando
en Modo Diseo. No se muestra por defecto pero puedes visualizarla
pulsando Ctrl + G.
La ventana Locales: Permite comprobar el valor de una variable en
cualquier momento de la ejecucin de la macro. Para mostrar esta
ventana, debes pulsar el botn Ventana Locales del men Ver.
La ventana Inspeccin: Permite agregar objetos para ver el valor
actual de una variable cuando ests en Modo Interrupcin. Para
mostrarla, pulsa el botn correspondiente del men Ver.
El Examinador de objetos: Es de gran ayuda para encontrar los
objetos, sus propiedades y mtodos asociados. Para mostrarlo pulsa F2.

Como en la mayora de aplicaciones, puedes modificar a tu gusto todos


los elementos de la ventana del editor. Puedes hacer estas
modificaciones pulsando en el botn Opcionesdel men Herramientas.

Es posible modificar los siguientes aspectos:

La tipografa de cada tipo de instruccin (palabras clave,


instrucciones, comentarios).
La introduccin del cdigo.
El acople de las ventanas.
La gestin de errores.

Artculos relacionados:

Qu puedes modificar en la apariencia del editor de VBA en Excel


Los procedimientos en VBA
Como te mostr antes, la ventana del Explorador de Proyectos muestra
todos los objetos que pueden contener cdigo VBA (los
objetos Hojas, ThisWorkbook, Mdulos, Userforms). Dentro de estos
objetos se ubican los procedimientos. En Excel existen tres tipos de
procedimiento:

Sub
Function
Property

De forma predeterminada, los procedimientos son pblicos (Public), en


todos los mdulos. Esto significa que se los puede llamar desde cualquier
parte del proyecto.

Si estableces el procedimiento como Private, slo podr ser llamado


desde otros procedimientos que se encuentren en el mismo mdulo.

El procedimiento Sub

Se puede decir que un procedimiento Sub es un conjunto de


instrucciones que realizan una serie de acciones especficas.
Hay dos tipos de procedimientos Sub:

Procedimientos generales: Son los que se declaran dentro de un


mdulo.
Procedimientos de evento: Se ejecuta automticamente cuando se
produce una determinada situacin o contexto.

Todos los procedimientos Sub comienzan con la palabra Sub seguida del
nombre que le quieras dar, y finalizan con la instruccin End Sub.

La instruccin Sub tambin puede ir precedida de otras palabras que


determinan el mbito, y puede contener una lista de argumentos para
que el procedimiento pueda usarlos de manera interna.

Artculos relacionados

5 formas de ejecutar procedimientos Sub


Cmo crear procedimientos Sub

El procedimiento Function

Ya sabes que Excel cuenta con muchas funciones de hoja predefinidas


como SUMA, BUSCARV o SUMAR.SI. Pero a veces es necesario realizar
clculos ms complejos para los que no existe una funcin.

Gracias a los procedimientos Function, puedes crear nuevas funciones,


ampliando as las que ya existen. Al igual que los procedimientos Sub, los
Function tambin admiten argumentos que permiten realizar los
clculos ms eficazmente.

Como diferencia de los procedimientos Sub, los procedimientos


Function pueden devolver un valor o resultado, por eso, al declarar la
funcin, es necesario especificar qu tipo de variable ser el valor que va
a devolver el procedimiento.

El procedimiento Property
Este tipo de procedimiento se utiliza para crear y personalizar las
propiedades de los objetos de Excel. Se declaran automticamente
como pblicos aunque es posible hacerlo como privados.

Variables, constantes y otros datos


interesantes
Variables

En muchas ocasiones necesitars guardar datos de forma temporal para


utilizarlos ms adelante en otros clculos. Por ejemplo, puedes
almacenar los valores de venta de un producto cada mes para luego
utilizarlo para hallar el total anual.

En general, una variable es una pequea regin de la memoria que se


utiliza para guardar valores o informacin que luego se usar en la
ejecucin del programa.

Toda la informacin que se maneja necesita utilizar la memoria RAM del


ordenador, por eso es una buena prctica reservar un lugar para guardar
una variable antes de utilizarla. Esto se conoce como declaracin de la
variable y, aunque no es totalmente necesario, te ayudar a entender
mejor el cdigo una vez escrito.

Puedes declarar una variable de dos formas diferentes:

Forma implcita: La variable se declara en el momento en el que se


va a utilizar. Se hace mediante la asignacin de un valor al nombre.
X = 13
Mes3 = Marzo
Total_anual = 32000

Forma explcita: Es necesario definir previamente el nombre de la


variable antes de utilizarla.
Para declarar una variable de esta forma debes escribir la
palabra Dim seguida del nombre de la variable. Dim Empleado.
Existe una forma de obligarte a declarar las variables y es introducir la
instruccin Option Explicit al comienzo del mdulo, fuera de cualquier
procedimiento. Esto har que cada vez que VBA encuentre una variable
sin declarar, te informe de que debes declararla antes de utilizarla.

Artculos relacionados

Tipos de variables en VBA

Constantes

Las constantes, como lo indica su nombre, son valores que nunca


cambian, que mantienen su valor durante toda la ejecucin de la macro.
Normalmente se utilizan para almacenar valores difciles de recordar y
que representan constantes (por ejemplo, la velocidad de la luz, que son
299 792 458 m/s, o el nmero pi, que es
3.1415926535897932384626433832795028841971)

Declarar una constante se hace de la misma forma que lo haras con una
variable.

Operadores

Una operacin simple puede ser 4+5=9. En esta expresin, el 4 y el 5 son


los operandos y el signo + el operador. Este es el ejemplo ms simple que
se me ocurre. Se utilizan para modificar un valor o para crear uno nuevo.

VBA cuenta con varios tipos de operadores:

Aritmticos: Son utilizados para hacer operaciones matemticas,


como sumar, restar, multiplicar o dividir.
De comparacin: Se utilizan para comparar expresiones
devolviendo VERDADERO o FALSO.
Lgicos: Con estos operadores es posible evaluar varias
expresiones a la vez, devolviendo VERDADERO o FALSO.
Arrays

Un array, llamado tambin arreglo, es una estructura que almacena


varios datos del mismo tipo ordenados de forma lineal, bajo el mismo
nombre.

Un array se caracteriza por:

Almacena los datos en posiciones de memoria contigua.


Tiene un solo nombre de variable que representa a varios
elementos. Los elementos se diferencian mediante un nmero de ndice.
Es posible acceder a cualquier elemento del array a travs de su
ndice.

Segn su dimensin o su tamao un array puede ser:

De una dimensin. Tambin llamados vectores. Los datos se


guardan de forma lineal.
De dos dimensiones. Tambin llamados matrices. Disponen los
datos en forma de tabla.
Multidimensional. Son los que tienen 3 o ms ndices.
Estticos. Mantienen siempre el mismo nmero de elementos. Se
utiliza cuando se sabe de antemano el nmro exacto de elementos que
va a contener.
Dinmicos. Su tamao puede cambiar en cualquier momento.

Funciones integradas de VBA


Las funciones son uno de los elementos bsicos de la programacin.
Adems de las funciones de hoja que proporciona Excel, es posible crear
funciones gracias a los procedimientos Function. Adems, VBA tiene
funciones integradas que puedes utilizar dentro de los procedimientos.

La funcin InputBox
Es una funcin que permite interactuar con el usuario solicitndole
informacin mientras se ejecuta una macro. Esto se hace mediante un
cuadro de dilogo.

Esta funcin devuelve los datos introducidos en forma de cadena de


caracteres cuando el usuario pulsa el botn Aceptar o la tecla Intro. Si
pulsa el botn Cancelar o cierra el cuadro desde la X devuelve una
cadena de longitud cero ().

La funcin MsgBox

Es la funcin ms utilizada en VBA. Se emplea para obtener una


respuesta simple como S o No del usuario y para mostrar mensajes
breves como errores y algn dato relevante para la ejecucin de la
macro.

La funcin MsgBox hace dos cosas: Muestra un cuadro de dilogo para


darle informacin al usuario y devuelve un valor del tipo
Integer dependiendo del botn pulsado. Si quieres conocer el botn que
se ha pulsado debes guardar el valor generado en una variable.

Las funciones de conversin de tipo

Ya sabes que las variables pueden almacenar diferentes tipos de datos. El


tipo de datos determina la naturaleza de los valores que toma la variable.

Algunas veces puede que necesites utilizar estos tipos de datos de forma
diferente al tipo de dato predeterminado. Para esto se utilizan las
funciones de conversin de tipo.

Ten en cuenta que no todos los tipos de datos pueden convertirse a


cualquier otro formato. Cuando utilizas una funcin de conversin de
tipo, sta devuelve el valor del dato convertido pero no cambia el valor
almacenado.

Estas son las funciones de conversin:

Cbool: Convierte un nmero en un valor boolean.


Cbyte: Convierte un nmero en byte.
Ccur: Convierte un nmero en moneda.
Cdate: Convierte un nmero en fecha.
Cdbl: Convierte un nmero a double.
Cdec: Convierte un nmero a Decimal.
Cint: Convierte un nmero a Integer.
CLng: Convierte un nmero a un entero largo.
Csng: Convierte un nmero a Single.
CStr: Convierte una variable de cualquier tipo a una de tipo String.
Cvar: Convierte cualquier variable a una de tipo Variant.
Val: Convierte una cadena de texto en un nmero.

Las funciones de comprobacin

Este tipo de funciones ayudan al usuario a comprobar el tipo de dato que


contiene una expresin o variable. Estas son las funciones de
comprobacin:

IsDate: Comprueba si una expresin se puede convertir en una


fecha.
IsNumeric: Comprueba si una expresin contiene un valor que se
pueda interpretar como un nmero.
IsNull: Comprueba si una expresin contiene un valor nulo.
IsEmpty: Comprueba si una expresin contiene algn valor o
todava no se han iniciado.
IsObject: Comprueba si una variable representa una variable de
tipo Object.

Las funciones matemticas


VBA tambin cuenta con funciones matemticas propias para realizar
operaciones matemticas y que se pueden emplear en los
procedimientos. Casi todas ellas coinciden con alguna de las funciones
de hoja. Te muestro algunas de ellas:

Abs: Devuelve el valor absoluto de un nmero.


Int: Devuelve la parte entera de un nmero decimal.
Rnd: Devuelve un nmero aleatorio entre 0 y 1.
Sqr: Devuelve la raz cuadrada de una expresin numrica.

Las funciones de cadena

VBA tambin te ofrece muchas funciones que te permitirn trabajar con


variables de cadena. Estas son algunas de las variables de cadena ms
utilizadas:

Asc: Devuelve un nmero enero de 0 255 que representa el valor


ASCII de un carcter.
Chr: Es la funcin inversa de Asc. Devuelve el carcter
correspondiente al cdigo ASCII introducido.
Len: Devuelve el nmero de caracteres de una cadena.
Left: Devuelve un nmero de caracteres determinado desde la
parte izquierda de la cadena.
Right: Devuelve un nmero de caracteres determinado desde la
parte derecha de la cadena.
Mid: Devuelve los n caracteres de una cadena especificada,
situados a partir de una determinada posicin.
Ltrim: Elimina los espacios iniciales de una cadena.
Rtrim: Elimina los espacios finales de una cadena.
Trim: Quita los espacios iniciales y finales de una cadena.
Ucase: Convierte los caracteres de la cadena en letras maysculas.
Lcase: Convierte los caracteres de la caden en letras minsculas.
InStr: Devuelve la posicin de una subcadena dentro de una
cadena.
Replace: Sustituye una cadena por otra.

Las funciones de fecha y hora

Con VBA tambin puedes realizar operaciones relacionadas con fechas y


horas. Estas son las funciones ms utilizadas:

Date: Devuelve la fecha actual del equipo.


Now: Devuelve la fecha y la hora actuales del equipo.
Time: Devuelve la hora actual del equipo.
DateDiff: Devuelve la diferencia entre dos fechas.

Estructuras de programacin
Las estructuras de programacin te permiten controlar el flujo de la
ejecucin de la macro, desvindolo segn acciones del usuario o
repitiendo ciertas instrucciones. Estas estructuras existen en todos los
lenguajes de programacin y funcionan casi de la misma forma.

Las estructuras condicionales

Este tipo de estructuras se utilizan para tomar decisiones. En ellas se


evala una expresin y, dependiendo del resultado obtenido, se realizan
diferentes acciones. Es posible evaluar expresiones tanto numricas
como de texto.

Las estructuras condicionales o de decisin son las siguientes:

If Then
If Then Else
IIf
Select Case

La estructura If Then
En muchas ocasiones necesitars que se ejecuten una o varias
instrucciones slo si se cumple una condicin. Si la condicin no se
cumple, el flujo del cdigo contina normalmente. Este es el contexto
perfecto para utilizar la instruccin If Then. Su sintaxis es la siguiente:

If condicin Then
Instrucciones
End If

Condicin: Suele ser una comparacin, pero puede ser cualquier


expresin numrica que d como resultado un valor de tipo numrico.
VBA interpreta este valor como Verdadero o Falso. Cualquier nmero
diferente a 0 lo considera Verdadero. Los valores 0 o null, los considera
Falso.
Instrucciones: El conjunto de rdenes a realizar.

Cuando VBA encuentra una instruccin If Then, evala si la expresin


lgica es Verdadera (True) o Falsa (False). En caso afirmativo, ejecuta las
instrucciones que se encuentran detrs de Then. En caso contrario, no
hace nada y contina ejecutando las instrucciones encuentra en la
siguiente lnea detrs de End If.
La estructura If Then Else

La estructura anterior es un poco limitada. Slo ejecuta cdigo cuando se


cumple la condicin.

Normalmente necesitars ejecutar unas instrucciones si se cumple la


condicin y otras si no se cumple. Para hacer esto, VBA cuenta con la
estructura If Then Else. Observa la sintaxis:

If condicin Then
Unas instrucciones
Else
Otras instrucciones
End If

Esta estructura permite que el flujo de ejecucin se bifurque por dos


caminos distintos segn si la condicin se cumple o no. Si la condicin
es True, se ejecutan una serie de instrucciones. Si es False, se ejecutan
otras distintas desde la instruccin Else hasta End If.

La estructura If Then ElseIf

Esta estructura es una variacin de If Then Else, que se utiliza cuando


es necesario evaluar ms de una condicin. Observa la sintaxis:
If condicin_1 Then
Instruccin_1
Instruccin_2

ElseIf condicin_2 Then
Instruccin_3
Instruccin_4

ElseIf condicin_3 Then
Instruccin_5
Instruccin_6


Else
Instruccin_7
Instruccin_8

End If

En este tipo de estructura, se examina en primer lugar la condicin_1. Si


se evala como True, se ejecuta el bloque de instrucciones
correspondiente. Si por el contrario, la condicin es falsa, se evala
la condicin_2. Si es verdadera, se ejecuta el bloque siguiente, y as
sucesivamente. Si ninguna de las condiciones de cumple, se ejecutar el
cdigo que encuentra entre Else y End If.

Estructuras If Then anidadas

Como has visto, es posible introducir una instruccin If Then dentro de


otra. A esto se le llama anidacin y se da frecuentemente cuando
necesitas construir decisiones con alternativas, cuando unas condiciones
se basan en otras.

Select Case

Cuando tienes muchas condiciones para evaluar, puede resultar


complicado utilizar instrucciones If anidadas. Por eso VBA te ofrece la
estructura Select Case como alternativa.

Con esta estructura se evala una condicin que puede dar como
resultado un nmero indeterminado de valores, y realizar acciones
segn este resultado. Observa la sintaxis:
Select Case expresin
Case Valor1
Instruccin_1
Instruccin_2

Case Valor2
Instruccin_1
Instruccin_2

Case Valor3
Instruccin_1
Instruccin_2


Case Else
Instruccin_1
Instruccin_2

End Select

Select Case evala una nica condicin al principio de la estructura. A


continuacin compara el resultado con los valores de cada Case de la
estructura y, si coincide, ejecuta las instrucciones asociadas a ese Case.

La estructura With End With

La mayora de los objetos cuentan con muchas propiedades. A veces es


necesario modificar varias propiedades sobre un mismo objeto, por lo
que se debera repetir el nombre del objeto tantas veces como
propiedades se vayan a modificar.

Para evitar repetir muchas veces el mismo objeto se utiliza la


estructura With End With. El objeto se nombra una sola vez pero se
pueden modificar las propiedades que sean necesarias.. Su sintaxis es la
siguiente:

With objeto
[instrucciones]
End With
Observa el siguiente ejemplo. En l te muestro cmo poner una fila
entera en negrita, con una fuente Comic Sans de color verde y con
tamao 14:

Sub ejemplo_with()
With Range(1:1).Font
.Bold = True
.Name = Comic Sans MS
.Size = 14
.ColorIndex = 4
End With
End Sub

Las estructuras de bucle


Gracias a este tipo de estructura es posible repetir uno o varios bloques
de cdigo, un nmero de veces determinado por una condicin. Mientras
se siga cumpliendo esta condicin, el bloque se seguir ejecutando.

Un ejemplo tpico se da cuando un usuario intenta acceder a un archivo


con su contrasea. Si la contrasea coincide con la que la aplicacin tiene
guardada en su base de datos, el bucle terminar, permitindole el
acceso. En caso contrario, se le pedir la contrasea una y otra vez hasta
que introduzca el dato correcto.

Entre las estructuras de bucle se pueden encontrar:

For Next
For Each Next
Do Loop

For Next

Se utiliza cuando es necesario repetir un bloque de cdigo un nmero


determinado de veces que ya se sabe de antemano. Esta estructura
utiliza una variable llamada contador que incrementa o reduce su valor
en cada repeticin del bucle. Su sintaxis es la siguiente:
For contador = inicio To final [Step incremento]
Bloque de instrucciones
Next

Contador: es la variable que se utiliza para contar las pasadas


que hace el bucle y debe ser de tipo numrico. Esta variable aumenta o
disminuye de forma constante.
Inicio: es el valor numrico desde el que el bucle comienza a
contar.
Final: es el valor numrico hasta el que el contador debe llegar.
Incremento: Opcional. Se trata de una expresin numrica
positiva o negativa. Si es positiva, inicio deber ser menor o igual que
final. Si es negativa, inicio tendr que ser mayor o igual que final. Si
omites este parmetro, VBA incrementar la variable de 1 en 1.
Bloque de instrucciones: son las instrucciones que se ejecutarn
repetidamente.
Next: es la palabra clave que indica a VBA dnde finaliza el bucle.
Cuando el flujo de ejecucin llega a esta lnea regresa a la linea donde se
encuentra For.

For Each Next

Este tipo de bucle es exclusivo de Excel y te permite recorrer todos los


elementos de una coleccin o matriz. Observa la sintaxis:

For Each elemento In grupo


[Instrucciones]
[Exit For]
[Instrucciones]
Next [elemento]
Elemento: es la variable que se utiliza para recorrer la coleccin o
la matriz. Si es una coleccin, esta variable puede ser de objeto o tipo
Variant. Si se trata de una matriz, slo podr ser Variant.
Grupo: es el nombre del conjunto de objetos o la matriz.
Instrucciones: representa el grupo de instrucciones para realizar.
Next: indica el final del bucle.

Cmo salir de las estructuras For Next y For Each Next

Algunas veces no es necesario ejecutar todas las repeticiones del bucle


que tenas previstas en un principio. Para esta operacin existe una
instruccin muy til: Exit For.

En el siguiente ejemplo te muestro el uso prctico de Exit For. Se trata


del ejemplo que he puesto ms arriba sobre la introduccin de la
contrasea para acceder al archivo:

Sub ejemplo_For_Next_Exit()
Dim contrasenia As String
Dim i As Integer
For i = 1 To 5
contrasenia = InputBox(Ingrese contrasea)
If contrasenia = 123 Then
mensaje = 1
Exit For
Else
mensaje = 2
End If
Next
If mensaje = 1 Then
MsgBox Bienvenido al sistema
Else
MsgBox Ha olvidado su contrasea, & _
comunquese con el administrador, _
vbOKOnly + vbCritical
End If
End Sub

Las estructuras Do Loop


Las estructuras For Next son perfectas cuando se sabe de antemano el
nmero de veces que se debe ejecutar un cdigo. Pero qu ocurre
cuando no hay un nmero concreto?.

Los bucles Do Loop cubren esta necesidad ya que permiten ejecutar un


bloque de cdigo de forma indefinida hasta que se cumple una
condicin. Este tipo de bucle hace posible evaluar la condicin al
principio o al final de la estructura. Tambin puedes especificar si el
bucle se repite mientras (While) la condicin se siga cumpliendo o hasta
(Until) que la condicin se cumpla. As que, segn esto, existen dos tipos
de bucle Do Loop:

Do Loop While: Se ejecuta mientras la condicin se cumpla.


Do Loop Until: Se ejecuta hasta que se cumpla la condicin.

En los dos tipos de bucle, primero se ejecutan las instrucciones y luego se


evala la condicin.

Tambin es posible hacer que primero se evale la condicin y, si se


cumple, se ejecute el cdigo mientras se cumpla o hasta que lo haga.

Do While Loop: Se ejecuta mientras la condicin se cumpla.


Do Until Loop: Se ejecuta hasta que se cumple la condicin.

Ejemplos con el bucle Do Loop While y Until (primero se hace la


comprobacin y luego se ejecutan las instrucciones).

Al igual que con los bucles For, tambin es posible salir antes de tiempo
de un bucle Do Loop. Para ello est la instruccin Exit Do.

Cuando VBA encuentra la instruccin Exit Do, el flujo de ejecucin del


cdigo pasa directamente a la siguiente instruccin tras el bucle.
Los objetos de Excel
Como te expliqu al principio de la gua, VBA es un lenguaje orientado a
objetos. El modelo de objetos de Excel contiene ms de 200 elementos
ordenados de forma jerrquica, aunque hay cuatro de ellos que
seguramente sean los que ms utilices:

Application: Hace referencia a la aplicacin (Excel).


Workbook: Hace referencia al libro de trabajo.
Worksheet: Hace referencia a una hoja de clculo.
Range: Hace referencia a un rango de celdas.

Te los muestro con ms detalle a continuacin.

El objeto Application

Es el objeto con mayor rango en el modelo de objetos. Hace referencia a


la aplicacin(en este caso, Excel).
Brinda acceso a las opciones y configuraciones a nivel de aplicacin,
como por ejemplo a la cinta de opciones, a la impresin o al tamao por la
fuente por defecto, entre otras.

Hacer modificaciones en este nivel supone cambios que se van a reflejar


en la interfaz de Excel y en sus diferentes herramientas.

Propiedades de Application

Application es uno de los objetos ms importantes de VBA, por eso


cuenta con muchas propiedades. Algunas de ellas definen el ambiente
donde se ejecuta Excel, tras controlan la presentacin de la interfaz y
otras devuelven objetos.

Algunas propiedades de las ms importantes son:

Caption: Devuelve el nombre que aparece en la barra de


titulo.Path: Devuelve la ruta de instalacin de Microsoft Excel.
DefaultFilePath: Determina el directorio por defecto donde
guardar los libros de Excel.
StatusBar: Sirve para mostrar mensajes en la barra de estado.
DisplayFormulaBar: Muestra u oculta la barra de frmulas.
DisplayAlerts: Determina si se muestran o no los cuadros de
dilogo de alerta.
DisplayFullScreen: Determina si Excel se ejecuta en pantalla
completa.

Mtodos de Application

Como mencion ms arriba, los mtodos son el conjunto de acciones que


puede realizar un objeto. Te muestro alguno de ellos:

OnTime: Permite programar los procedimientos para que se


ejecuten en un momento determinado.
OnKey: Permite programar los procedimientos para que se
ejecuten cuando se pulsa una tecla o un mtodo abreviado.
Wait: Realiza una pausa por un tiempo especificado.
Quit: Permite salir de Excel.

Workbooks y Workbook

El objeto Workbooks se encuentra por debajo de Application. Workbook


forma parte de la coleccin Workbooks. Lo devuelven las siguientes
propiedades del objeto Application:

Application.Workbooks: Devuelve la coleccin Workbooks.


Application.ActiveWorkbook: Devuelve el libro activo.
Application.Thisworkbook: Devuelve el libro que contiene la
macro ejecutada.

Propiedades de Workbooks y Workbook

Debes tener en cuenta, a la hora de trabajar con objetos y colecciones,


que muchas colecciones comparten propiedades con los elementos que
representan. Dependiendo del objeto, los parmetros necesarios o
disponibles podran no ser los mismos. Este es el caso de Workbooks y
Workbook:

Item: Hace referencia a un elemento en concreto de la coleccin.


Name: Devuelve el nombre de un libro.
FullName: Devuelve el nombre y la ruta del libro.
Saved: Se utiliza para saber si un libro ha sido guardado o no.
Devuelve False si todava no se ha guardado o tras el guardado se han
seguido haciendo cambios. Devuelve True cuando la ltima accin que se
ha realizado ha sido guardarlo.

Mtodos de los objetos Workbooks y Workbook

Estos son los mtodos ms importantes de estos objetos:

Add: Permite crear un nuevo libro.


SaveAs: Equivale al comando Guardar como.
Save: Guarda los cambios hechos en un libro desde la ltima vez
que se guard.
Close: Cierra el libro.
Open: Abre un libro. Cada vez que se abre un libro se agrega un
nuevo elemento a la coleccin Workbooks.

Worksheets y Worksheet

Como ya sabes, un libro de Excel puede contener una o varias hojas de


clculo que se pueden insertar, eliminar o mover a cualquier lugar.
Tambin es posible realizar otras acciones como renombrarlas,
seleccionarlas y editarlas en conjunto.

En VBA una hoja de trabajo recibe el nombre de Worksheet y la


coleccin de todas las hojas del libro es Worksheets.

Propiedades de Worksheets y Worksheet

Estas son las propiedades ms utilizadas:

Item: Sirve para hacer referencia a un objeto de la coleccin.


Puedes hacerlo a travs de su nmero de ndice o de su nombre.
Name: Permite establecer el nombre de la hoja.
CodeName: Devuelve el nombre interno de la hoja.
Visible: Permite mostrar u ocultar una hoja de clculo.
Count: Es una propiedad de la coleccin Worksheets. Devuelve el
nmero de hojas del libro.
UsedRange: Para conocer el rango utilizado en la hoja.

Mtodos de Worksheets y Worksheet

Add: Agrega una hoja de cualquier tipo al libro.


Move: Permite organizar las hojas dentro de un libro.
Copy: Copia una hoja de clculo en otra ubicacin.
Delete: Elimina una hoja.
El objeto Range

El objeto Range identifica a una celda o conjunto de ellas, ya sean


contiguas o no.

Propiedades de Range

Este objeto es de los que ms propiedades tiene. Te muestro las ms


importantes:

ActiveCell: Devuelve la celda activa de la ventana activa.


Range: Devuelve un objeto Range que representa un rango de
celdas.
Cells: Otra forma de hacer referencia a las celdas.
Rows: Devuelve un objeto Range que representa una fila de la
hoja.
Columns: Devuelve un objeto Range que representa una columna
de la hoja.
Offset: Devuelve un objeto Range desplazado de una referencia
un nmero de filas y de columnas determinado.
Value: Establece el valor que tiene una celda o rango de ellas.
FormulaLocal: Permite introducir frmulas y funciones en tu
propio idioma, como si lo hicieses directamente en la hoja.
End: Desplaza la celda activa a la ltima celda de la fila o la
columna.
Font: Establece el tipo de fuente.
Interior: Permite modificar el fondo de la celda.
Border: Permite modificar los bordes de la celda.

Mtodos de Range

Estos son algunos de los mtodos de Range ms utilizados:

Select: Permite seleccionar una celda o conjunto de ellas.


DataSeries: Permite introducir una serie de datos en un rango de
celdas.
Copy: Copia un rango de celdas en otra parte de la cuadrcula.
ClearContents: Borra el contenido de las celdas manteniendo su
formato.

Los formularios
Gracias a los formularios es posible manejar datos en Excel de forma ms
intuitiva y eficiente, ya que, adems de acelerar el proceso, consigue
evitar los temidos errores de introduccin de datos.

Los formularios estn llenos de controles (botones, cuadros de texto,


etiquetas, etc.) programables para responder a determinadas acciones
(clics, seleccin de datos, etc.).

Para agregar un formulario a Excel desde el editor de VBA, primero


debes crearlo a travs del men Insertar UserForm. Adems de crearse
el nuevo formulario, en el explorador de proyectos tambin se crea la
carpeta Formularios donde irn alojados todos los que crees para ese
proyecto.

En la ventana tambin aparecer un cuadro flotante donde se muestran


muchos controles para que comiences a agregarlos al formulario.

Un formulario es un objeto UserForm, que tiene sus propiedades,


mtodos y eventos propios con los que modificar su apariencia y
comportamiento.

Propiedades de los formularios

El primer paso para disear un formulario consiste en establecer las


propiedades iniciales. Si no aparece la ventana Propiedades en la parte
izquierda, pulsa F4 para mostrarla.

La ventana Propiedades est dividida verticalmente. En la parte


izquierda se muestra el nombre de la propiedad y en la parte derecha, el
valor correspondiente. Modificar una propiedad es muy fcil. Slo debes
introducir el nuevo valor en la parte derecha.

Estas son las propiedades ms utilizadas:

Name: Permite establecer el nombre del formulario.


Caption: Permite personalizar la barra de ttulo del formulario.
Height: Establece la altura del formulario.
Width: Establece el ancho del formulario.
BackColor: Permite elegir el color de fondo.
BorderStyle: Permite establecer un tipo de borde.
BorderColor: Define el color del borde.
StartUpPosition: Establece la ubicacin exacta del formulario en
la pantalla.
Picture: Permite seleccionar una imagen de fondo para el
formulario.
PictureAlignment: Permite alinear la imagen dentro del
formulario.
PictureSizeMode: Permite ajustar el tamao de la imagen.

Mtodos de los formularios

Adems de modificar las caractersticas tambin puedes cambiar los


comportamientos:

Estos son los mtodos ms utilizados:

Show: Muestra el formulario en pantalla. Si el formulario no est


cargado en la memoria, primero lo carga y luego lo muestra.
Load: Carga un formulario en la pantalla pero no lo hace visible.
Hide: Oculta el formulario sin descargarlo de la memoria.
Unload: Descarga el formulario de la memoria.

Eventos de los formularios


Los formularios tambin responden a eventos. Estos son los ms
importantes:

Initialize: Se produce cuando se carga por primera vez el


formulario con Show o Load.
Activate: Se produce cuando el formulario recibe el foco y se
convierte en activo.

Controles de los formularios

La gran mayora de formularios que crees, servirn para introducir y


seleccionar datos ms fcilmente. Para ello necesitas insertar controles.

Excel tiene muchos tipos de controles diferentes que puedes encontrar


en el Cuadro de herramientas (la barra de herramientas flotante). Para
insertar cualquiera de ellos slo tienes que arrastrarlo hasta el
formulario o hacer clic sobre l y dibujarlo en la ubicacin que desees:

Etiqueta (Label): Se utiliza para mostrar informacin que los


usuario no puedan modificar y para identificar los dems controles.
Cuadro de texto (TextBox): Se suele utilizar para mostrar
informacin o para introducir datos . El contenido puede ser editado.
Cuadro de lista (ListBox): Se muestra una lista de elementos para
que el usuario seleccione uno o varios de ellos.
Cuadro combinado (ComboBox): Es un cuadro de lista
desplegable. El usuario puede seleccionar uno de los elementos que
contiene.
Botn de comando (CommandButton): La mayora de formularios
cuenta como mnimo con uno de estos botones. Se suele utilizar para
realizar una accin.
Marco (Frame): Se utiliza como contenedor de otros controles. Se
suele utilizar para agrupar varios grupos de botones de opcin.
Casilla de verificacin (CheckBox): Se utiliza para que el usuario
d una respuesta del tipo booleano (S/No, Verdadero/Falso).
Botn de opcin (OptionButton): Se emplea cuando el usuario
debe seleccionar una sola opcin de un grupo de opciones.
Imagen (Image): Inserta una imagen en el formulario.
Pgina mltiple (MultiPage): Este control contiene diferentes
ficha, cada una de las cuales es una nueva pgina que puede albergar
otros controles.
Barra de desplazamiento (ScrollBar): Permite desplazamientos
rpidos a lo largo de una lista de elementos.
Botn de nmero (SpinButton): Permite al usuario seleccionar un
nmero haciendo clic en una de las dos flechas que lo componen.

Resumiendo
Si has conseguido seguir la gua completa, enhorabuena! VBA no es
mucho ms que todo esto que te he resumido en 7.000 palabras.

Si no has llegado a entender algo, escrbelo en los comentarios y te


echar una mano para que logres comprenderlo.

Como ves, aprender a programar macros con VBA significa conocer la


metodologa de la programacin (comn en casi todos los lenguajes
orientados a objetos) y el vocabulario necesario como para traducir
una necesidad con Excel en una pequea pero potente aplicaci

https://www.ayudaexcel.com/megaguia-macros-vba/
Como crear un ndice de hojas
en Excel empleando macros:
Gua Rpida
Daniel Cedeo Urbina 17/11/2013 Excellentias Blog, Macros, Macros
Excel 11 comentarios

Todos nos hemos enfrentado a lo complicado que


resulta navegar en un libro Excel con muchas hojas de
clculo, sobre todo si se trata de encontrar una hoja en
particular a la que deseamos acceder. En estos casos la
prctica ms recomendable es crear un ndice que nos
permita explorar de forma rpida el libro entero
poniendo a nuestro alcance en una sola visual y con tan
solo un clic cualquier hoja de clculo de nuestro inters.

Podramos intentar crearlo a mano, pero cuando se


trata de libros muy grandes y con cambios frecuentes
puede resultar una tarea tediosa elaborar y mantener
actualizado nuestro ndice manualmente. Por fortuna
podemos emplear una sencilla macro de Excel que nos
permitir crear de forma completamente automtica
nuestro ndice y mantenerlo actualizado siempre ante
cualquier cambio que hagamos en nuestro libro.
EN PRCTICA!

Nuestro objetivo es simple: alojaremos una macro de


Excel en un nuevo mdulo de Visual Basic para
Aplicaciones que nos permitir crear automticamente
un ndice con vnculos a todas las hojas que estn
incluidas en el libro. Adems configuraremos nuestra
macro en Excel para que el ndice se vuelva a generar
cada vez que la hoja de clculo este activa.

Veamos en 2 sencillos pasos como hacerlo!


PASO 1: INSERTAR UNA NUEVA HOJA DE CLCULO

Nuestro primer paso ser insertar una nueva hoja a


nuestro libro la cual llamaremos ndice; en ella
alojaremos en un mdulo privado del
objeto Sheet nuestra macro de excel para crear un
ndice de hojas.

Para crear nuestra nueva hoja tan solo es necesario


hacer clic derecho con el ratn sobre alguna de las
hojas ya existentes y en la lista de acciones que nos
aparecer seleccionar Insertar. En la imagen anexa
puedes verificar cual es la lista de acciones que te
aparecer:

Una vez hayas hecho clic en la


opcin Insertar acceders al men Insertar en el cual en
la ficha General seleccionars la opcin Hoja de Clculo,
tal como lo puedes apreciar en la siguiente imagen:
Recuerda que tambin es posible insertar una hoja a
travs del mtodo abreviado Mayusc + F11 (para
teclados en ingls Shift + F11) o haciendo clic en el
botn insertar Hoja de Clculo que se encuentra en la
parte inferior de la pantalla, siempre al lado de la
pestaa de la ltima hoja de clculo de tu libro Excel,
tal como lo puedes ver en la siguiente imagen:

No olvides cambiar el nombre por defecto de la hoja


a ndice antes de continuar con nuestro siguiente paso.
PASO 2: INSERTAR MACRO DE EXCEL EN NUESTRA NUEVA
HOJA

Una vez creada nuestra hoja ndice procederemos a


insertar nuestra macro de Excel que nos permitir crear
un ndice de hojas de forma automtica. Para ello
haremos clic derecho sobre la pestaa de nuestra
hoja ndice y en el men de acciones que se despliega
seleccionaremos la opcin Ver cdigo, tal como lo
puedes apreciar en la imagen anexa:
Recuerda que tambin puedes acceder al men de VBA
y macros de Excel manteniendo activa la hoja y
tecleando el mtodo abreviado Alt + F11.

Una vez accedes al men de VBA y macros de Excel


escribe el siguiente cdigo de Visual Basic, nuestra
macro para crear el ndice de hojas:

Private Sub Worksheet_Activate()

Dim cHoja As Worksheet

Dim L As Long

L=1

With Me

.Columns(1).ClearContents

.Cells(1, 1) = INDICE

.Cells(1, 1).Name = Indice

End With

For Each cHoja In Worksheets


If cHoja.Name <> Me.Name Then

L=L+1

With cHoja

.Range(A1).Name = Inicio & cHoja.Index

.Hyperlinks.Add Anchor:=.Range(A1), Address:= ,


SubAddress:=Indice, TextToDisplay:=Volver al ndice

End With
Me.Hyperlinks.Add Anchor:=Me.Cells(L, 1), Address:=
, SubAddress:=Inicio & cHoja.Index,
TextToDisplay:=cHoja.Name

End If

Next cHoja

End Sub

Una vez copiada la macro que nos permitir crear el


ndice de hojas de forma automtica podemos
presionar Alt + Q para volver al libro y guardar los
cambios. Para ejecutar el cdigo solo es necesario que
vayamos a otra hoja de clculo y regresemos luego a
nuestra hoja ndice. Cada vez que ingresemos a esta
hoja se generar de forma automtica nuestro ndice.

Nota Importante: Nuestra macro para crear un


ndice de las hojas emplea la celda A1 de cada hoja en
tu libro de clculo por lo que si tienes datos importantes
en esta celda debes modificarla para que no pierdas
informacin. Para hacerlo debes cambiar cualquier
menci a A1 en el cdigo por alguna celda que
consideres ms adecuada.

Como siempre les dejamos un libro de Excel en el ya


hemos aplicado los pasos anteriores para que puedan
ver en directo como funciona nuestra macro para crear
un ndice de hojas de forma automtica.

Macro en Excel 2007 para crear un ndice de


hojas.
Macro en Excel 2003 para crear un ndice de
hojas.

Esperamos que este artculo sea de mxima utilidad


para todos. Si te gust este artculo no olvides que en
nuestra seccin de Macros en Excel puedes encontrar
muchsimos ms artculos como este:

Seccin de Macros en Excel

Un saludo y xito para todos,

EL Equipo EXCELLENTIAS.COM

http://www.excellentias.com/macro-en-excel-para-crear-un-indice-de-hojas/
Pasar datos de Excel a Word
con macros VBA, mejor
mtodo
Escrito por M. Vizcarra el 01/03/2013. Posteado en Excel

Despus de revisar innumerables posts acerca de pasar datos desde Excel hacia Word
encontr la mejor solucin. Esta consiste en enviar los datos desde hojas Excel o
cualquier variable hacia cualquier lugar en Word utilizando el mtodo buscar y
reemplazar con macros VBA en Excel.

La mejor ventaja es que pueden colocar diferentes variables con texto a voluntad,
conservando el formato en cualquier parte de Word, adems permite modificaciones
posteriores. Muy til para disear pequeos aplicativos para gestionar documentos
diversos, como notificaciones, cartas, formatos de inscripcin, sin utilizar la funcin
combinar correspondencia en Word, todo esto se hace desde Excel.

Pasos:
1 Convertir o crear tu documento Word como plantilla, con extension .dotx, Archivo /
Guardar como, luego seleccionan Plantilla de Word (*.dotx), y cuando quieran
utilizarla el documento abrir una copia en vez del original. Para modificar el original
tienen que abrirlo desde Archivo / Abrir, en Word.

2 Deben colocar textos a reemplazar en la plantilla Word original, por


ejemplo [reemp_nombre], [reemp_direccion], [reemp_telefono], o lo que se les ocurra
(sin los corchetes tambin funciona).
3 Ahora viene el cdigo en macros de Excel, inserten un nuevo mdulo y peguen este
cdigo (no olviden guardar como Libro habilitado para macros):

Para una sola variable, solo reemplazar el texto [reemp_nombre]

Sub exportaraword1()

patharch = ThisWorkbook.Path & "\plantilla.dotx" 'ruta de la plantilla

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

objWord.documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0

textobuscar = "[reemp_nombre]"

textoreemplazar = "Manuel Vizcarra"

objWord.Selection.Move 6, -1 'moverse al principio del documento

objWord.Selection.Find.Execute FindText:=textobuscar

While objWord.Selection.Find.found = True 'reemplaza el texto, y busca si hay otro para


reemplazarlo
objWord.Selection.Text = textoreemplazar

objWord.Selection.Move 6, -1

objWord.Selection.Find.Execute FindText:=textobuscar

Wend

objWord.Activate

End Sub

Ahora el cdigo para muchas variables (slo es una sugerencia)

Sub exportaraword2()

Dim datos(0 To 1, 0 To 2) As String '(columna,fila)

patharch = ThisWorkbook.Path & "\plantilla.dotx"

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

objWord.documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0

datos(0, 0) = "[reemp_nombre]"

datos(1, 0) = Hoja1.cells(1,1) 'datos(columna,fila) = Hoja1.cells(fila,columna)

datos(0, 1) = "[reemp_direccion]"

datos(1, 1) = Hoja1.cells(2,1)

datos(0, 2) = "[reemp_telefono]"
datos(1, 2) = Hoja1.cells(3,1)

For i = 0 To UBound(datos, 2)

textobuscar = datos(0, i)

objWord.Selection.Move 6, -1

objWord.Selection.Find.Execute FindText:=textobuscar

While objWord.Selection.Find.found = True

objWord.Selection.Text = datos(1, i) 'texto a reemplazar

objWord.Selection.Move 6, -1

objWord.Selection.Find.Execute FindText:=textobuscar

Wend

Next i

objWord.Activate

End Sub
Espero que este cdigo les haya servido, an no lo pruebo en Excel 2007, solamente
en Excel 2010. Dejo los archivos de ejemplo para quepuedan descargarlo. No olviden
dejar sus agradecimientos, buen da para todos.

Descargar ejemplo pasar desde Excel hacia Word

http://desref.com/pasar-datos-de-excel-a-word-con-macros-vba-mejor-
metodo/

http://www.nerdilandia.com/curso-gratis-en-espanol-para-aprender-macros-
en-excel-2013/

http://www.forosdelweb.com/f90/macro-para-hacer-hipervinculos-506515/

http://www.cs.us.es/cursos/ai-2003/Lecciones/cuentas_a_30.htm

http://www.programarexcel.com/2013/07/seleccionar-o-hacer-referencia-
hojas.html

Вам также может понравиться