Está en la página 1de 42

APLICACIONES DEL EXCEL 2007

CON MACROS Y VBA



,

ILMER CONDOR

Programacion de macros en Excel

INDICE DE CONTENIDO

CAPITULO 1 3

INTRODUCCION 3

HERRAMIENTAS DEL EXCEL 4

Filtro avanzado 4

ccnscltdaclen 7

Tablas dlnarnlcas ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 9

Analisis de datos 13

APLICACIONES DE LAS MACROS 14

En una consclldaclen 14

En una tabla dlnarnlca 15

En Filtro avanzado •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 16

BOTONES DE CONTROL DE FORMULARIOS PARA EJECUTAR MACROS 19

CAPITULO 11 22

PROGRAMACION ORIENT ADA A OBJETOS 22

OBJETO •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 22

CAPITULO 111 25

LENGUAJE VISUAL BASIC DE APLICACIONES (VBA) 25

EI Editor del VBA 25

EI Editor del Visual Basic 25

VARIABLES ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 30 SENTEN CIA DIM ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 31

CONSTANTES 34

MODULOS 35

PROCEDIMIENTOS 35

ARGUMENTOS 38

ASIGNACI6N DE VALORES 0 EXPRESIONES 39

Ingreso de datos. Emision de resultados 40

Sentencia condicional: If End If; Select Case End Select 44

CAPITULO IV 51

SENTENCIAS REPETITIVAS ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 51

ARREGLOS (VECTORES 0 MATRICES) EN VBA 60

FUNCIONES •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 69

CAPITULO V 80

PROGRAMACION USANDO OBJETOS DEL EXCEL 80

Objetos del Excel 80

Pagina 1 de 154

Programacion de macros en Excel

CAPITULO Vl 95

Objeto WorkSheet. Propiedades y Metodos. Ejemplos 95

Conjunto Range. Propiedades y Metodos. Ejemplos 100

CAPITULO Vll 115

Creaci6n de formularios de usuario. Ejemplos de interacci6n con m6dulos y macros .

........................................................................................................................................... 115

Cuadros de control del UserForm 119

CAPITULO Vlll 148

A PLICA ClONES 148

Aplicacion 1 : Consulta y extracclen en una base de datos 148

Aplicacion 2. Emision de un reporte de compra 150

Aplicacion 3. Macro para imprimir un formato-recibo 151

Aplicacion 4. Realizar varias consultas y transferir al Excel 151

Pagina 2 de 154

Programacion de macros en Excel

CAPITULO I

INTRODUCCION

Antes de ingresar al desarrollo del Lenguaje Visual Basic para Aplicaciones, haremos una breve exposici6n de algunas herramientas del Excel que se supone son conocidas por nuestro amable lector. Sin embargo, para unificar criterios y con el animo de recordar 10 conocido, haremos una exposici6n de la secuencia de pasos que se sigue para ejecutar 0 usar determinadas herramientas.

Este repaso nos servlra tam bien para mostrar dicha secuencia usado en las versiones Excel 2003 y Excel 2007.

EI objetivo de esta secci6n es, entonces, refrescar al participante de dichos procedimientos a fin de que pueda usarlos sea durante la grabaci6n de macros 0 cuando tenga que programar ciertas acciones que requieran del uso de tales procedimientos.

En el numeral 1 presentamos la secuencia de pasos para realizar 0 ejecutar la herramienta con algunas observaciones y comentarios. En el numeral 2 daremos algunos ejemplos de grabaci6n de macros que hagan uso de determinadas herramientas. En el numeral 3 desarrollaremos algunas macros que nos permitan realizar algunas operaciones en Excel de uso frecuente. Esta introducci6n termina con una breve exposici6n de la filosoffa de objetos en la Programaci6n Orientada a Objetos (POO) , tecnlca empleada en la programaci6n de macros.

Pagina 3 de 154

Programacion de macros en Excel

HERRAMIENTAS DEL EXCEL

A'>!'ilI1JI Action -----------============T=========~~

Esp ~' ,Eiltr,arla llsta 'sil"j mOller+a .sotro Jlugar

r ~0piar a 'OUO lugar

Mercado Rar;rgode'l:a 1,ISt:.: l¥Wlijl@

Contabilidad &aFlgi21 de.citenos:

Filtro avanzado

lns ertar

~[[Inell:~[Ili1e5 ~ Prapieojadfs alj:Za!

fCi ~ !rl:! Ed itar vm cu 10 S

O:mextoms,

rber, Lisai lI!:gnton, Frank :9~!r.....Linda aston, S~,m

~'I 8'rldez, Jaime ents, Toni

:Guire·, E_IJen m~ert, A:le·xandJaJ l'ith R':l,r!o:l~:l

I
i1 11
a ,3
Fi Hespon. Producto Auxiliar Cantable Aux, Admihistrativo IAdmihistraci, C I

+----, -- -+,-~-~ opera:

Ing T ecnico Itlgenieria

Aux, Admin, Unidad Contabilidad r ~6J® registrosUnirns ,3

,Aux, Admin, Unidad Iingenieria 4

IContable I~on_tabilidad Aceptar Carnci:olar I;

InvE!sti,2ador ' I + D ......,,-,---:_. __ ---.-----------11 5

A II... T ~.__.ni·rn I nn ... ni ... r I iii!

I mnr","j'nriiI'i""

Figura 01

Usamos filtro avanzado para poder extraer, sea en una misma hoja 0 en otra, ciertos registros de una base de datos que cumplen determinadas condiciones.

Para realizar el filtro avanzado es necesario definir previamente el range de criterios as! como conocer el range de datos y la celda, a partir de la cual se deben emitir los resultados.

EI range de criterios debe contener en su primera fila, los nombres de los campos (columnas) yen las siguientes filas contener los valores 0 criterios del filtrado.

La imagen que se presenta en la Figura 01, nos muestran la secuencia de pasos que se debe seguir para realizar el filtro avanzado.

En la ventana de dialoqo Filtro avanzado seleccione d6nde desea el listado, cual es el range de criterios y a partir de que celda se debe recibir los resultados.

Pagina 4 de 154

Programacion de macros en Excel

Nota 1:

En el caso de Excel 2003, si desea extraer 10 filtrado hacia otra hoja, entonces debe definir el range de los datos con un nombre de rango. Si desea, el range de criterios puede estar otra hoja, s610 que, para mayor facilidad se puede usar tambien nombre de rango. En la versi6n 2007 no es necesario que el range tenga nombre, pero sf que el procedimiento se ejecute estando en la hoja hacia donde se desea el resultado.

Ejemplo

Abra el archivo Pedidos.xlsx. En la hoja Pedidos se tiene una lista de pedidos de 830 clientes, atendidos por un grupo de empleados y enviados a distintos destinos. En la hoja Detalles de pedidos, se tiene la lista de productos pedidos por cada cliente. Se desea obtener

a) Un reporte de los pedidos realizados por un cliente en particular.

b) Igualmente se desea obtener un reporte de todos los pedidos atendidos por dos empleados en particular y cuya forma de envfo sea Speddy Express.

Soluci6n

Haciendo clic en el cuadro de nombres, apreciamos que los datos de la hoja Pedidos tiene por nombre de rango, Pedidos y que la otra hoja tiene por nombre, Detalle.

Pregunta a)

Insertemos una nueva hoja; que su nombre sea Reporte 1.

~ ~ ~I I Pedidos I De1t~lles de Pedidos j Roeportoe] 1'tJ /I

,_,

Copiemos toda la cabecera (nombres de campo) de la hoja Detalles de pedidos y la peg amos en la primera fila de la hoja Reporte 1

Supongamos que se desea obtener los pedidos del cliente cuyo numero de pedido es 11077. Para ello digitamos debajo de Id Pedido, 11077 (en la hoja Reporte)

B

Producto

Ahora realizaremos el procedimiento del Filtro Avanzado:

Estando en la hoja Reporte, hacemos clic en eAvanzadas» del grupo -eorcenar y flltrao- de la ficha <Datos>.

Pagina 5 de 154

Programacion de macros en Excel

Completamos la ventana de dialoqo que aparece, sequn se muestra en la siguiente imagen:

lFi It", avanza do 1!1J1..!J '

A(~6m---------------------- '~Id~d~'-~peed~,d~ol--------~P~rodku~ct~o------~II~~~~~I?~~I~~~I~~~~I

r Eiltrar la lisla .in moverla .a otro lugar I+------:~'""~ ~:c;~,;.t~ *'~~"':'r~"'pe,:'-"~c"'!i""~:""~:'C",:,:,-,B,,,a,,,rleLY ---------+-----~~I_~~___=;C;S:7t____o;:

11077 Especias Cajun del chef Anton

Co" C_opiar a otro lugar 11077 Mermelada de qrosellas de la abuela

11077 Peras secas orgc=an",ic,;,;,s,-,d;;,-e,-,I 11,,-0 C'-Bo'-=b-----1--------::-~3---=t-~~I--_;_:

iM i 11077 Salsa de arandanos Northwoods

~ +---~1~10~77~P~e~z~es~p,a~d~a~~~~~----+---~~~--~~~~~

, 11077 Queso Manchegl"-0 -"'L.'-'P--".-'-'st"'-or."---- -+- ~~I_~;::'I______;C;S;;t____

~ '+' __ ~1~10~77~A?'~as'-'K~o~nb~u~------------+_----~~--~~_7~+_~

11077 Cuajada de judlas

R~rngo del' li.rn , I Dernlle

&~mgo d. criterios: I Reporte I ,j;!>,,~1::(iF .~Z

C!!piar ,a : I Reporte I $.0.$10

Precio por unidad Cantidad Oescuento Monto
~, 19_00 1638 20_00% 24897_60'
I 10_00 2907 0_00% 29070_00
H200 477 000% 1049400
~ 25_00 896 2.00% 21952_00
130_00 158 5_00% 4503_00
s 40_00 390 10_00% 14040_00
s 31.00 918 0_00% 28458_00
s 38_00 1344 5_00% 48518_40
$,6,_00 1716, 0_00% 10296,_00
s 23_25 199 3_00% 4487_95
s 17_45 1504 3_00% 25457_46
H1.00 780 4_00% 60652_80
$ 9_00 1960 0_00% 17640_00 11077 Pustre de merellg~ueo-'Pc-"avl""o""v • .-' ------+---______:;--c'-'-'~--~+_----"-"~+-~ 11077 Mermelada. de Sir Rodney's

r _:!.olo regi,_tros urncos

C~n,,,lar

11077 Pan fino

A la derecha se aprecia una parte de dicho reporte.

Pregunta b)

Inserte una nueva hoja y que se nombre sea Reporte 2.

Copiaremos la cabecera de la hoja Pedidos y la pegamos en esta nueva hoja. Supongamos que se desea obtener un reporte de los pedidos atendidos por Buchanan, Steven y por Davolio, Nancy. Esto significa que debemos ingresar estos nombres debajo de la columna Empleado y "Speddy Express" 10 ingresamos debajo de Forma de envfo pero repetido, como se muestra en la siguiente imagen:

EITipleado

A continuaci6n realice el mismo procedimiento anterior digitando en Rango de la lista:

Pedidos. La siguiente imagen muestra parte de este reporte.

~"'" ABC D E F G H

1 Id de pedido I Clients Ernpleado I Fecha de pedido I Fecha de entrega I Fecha de envio I Forma de envio I Ca;go=]

2 1 Buchanan, Stwel1 L 1 ISpeedv Express 1_

F---- j_DaVOliO, Nancy lspeedY Expresl _

;0--

~-- r

F~----~--------------------~----------~--------~--------+--------+-l--------+------

9 ITT T T

o Id de pedido I Clients I Ernpleado I Fecha de pedido I Fecha de entrega I Fecha de envio I Forma de envio I

3 10250 Hanari Carnes

Pe,acock, Marq-aret 08,-07-1996 05-08-19% 12-07-1996 United Packaus

Cargo ~

2 10249 Toms Spezialitatsn

Suyama, Michael 05,-07-1996 1'6-08-1996 10-07-1996 Speedy Express

$65_83:

1 10248 Wilman Kala Buchanan, Stsvsn 04,·07 ·1996 01·08·199-5 1'6·07 ·19% Federal Shippinu

s 32_38;

$11_61

4 10251 Viictuailles en stock

Leverling, Janet 08,-07-1996 05-08-19% 15-07-1996 Speedy Express

$41.34-

5 10252 Supremes delices

Pe.acock, Marg'aret 09,-07 -1996 06-08-1996 11-07 -1996 United Package

Pagina 6 de 154

Programacion de macros en Excel

Consolidaci6n

Se puede consolidar rangos de datos que estan en una misma hoja, rangos de datos que estan en diferentes hojas 0 igualmente range de datos que corresponden a libros diferentes.

Nota 1:

Se debe tomar en cuenta que la consolidaci6n se lIeva a cabo sobre rangos que tiene la misma estructura, aunque el nurnero de filas puede variar entre un range y otro.

Nota 2:

Si los rangos tuvieran columnas que no puedan ser consolidadas, puede dejar de incluirlas en la selecci6n y usar las siguientes 0 trasladarlas al final a fin de que se pueda elegir un range adecuado. Siempre consolida tomando en cuenta la primera columna del rango.

Consolidaci6n de rangos de una misma hoja

La Figura 02 muestra la secuencia de pasos para realizar una consolidaci6n de rangos dentro de una misma hoja de un libro.

Observaci6n

En la imagen de la Figura 02, se han consolidado cuatro rang os contenidos en la misma hoja. Haciendo clic en el cuadro <Referencia> se han seleccionado cada range y luego se hizo clic en <Agregar>. Esto para cada range a ser consolidado ..

Figura 2

Pagina 7 de 154

I

Programaci6n de macros en Excel

A

H

±

B

, (En miles de toneladas}

IAno 2000

Enero 164
Febrero 136
Marzo 286
Abril 266
Mayo 256
.Junio 518
~ulio 479
Agosto 326
Septiembre 505
Octubre 471
Noviembre 533
Diciembre 376
I
IAno 2001
IEnero I 1202
Febrero 1005
Marzo 654 ~~~~c~on~ro~.lid~a~r _

-I rFu~no~on~: ~

Isuma :::oJ

Refereqda:

:00 I -
EXBm.inar " -
~ Mregar I -
-
~Iiminar I - I Ano 2000 I $.0.$73: $8$8 5 Todas las references:

I:Af'iO 2.000 !.5A_S-31:.5B$43 Ano 2000 I $A$45: $8$5 7 AFio2000! :5A_SS,9: :58571

I~ar rctulos en-1

('7 Fila guperior

P' [¢.?.i.~.~.~.~.j~.g.~.i.~.~.~.~.1 r Crear ~rnculos con los datos de origen

I Aceptar

Cerrer 1-

+

1

t

Consolidaci6n de hojas

J_ +

En este caso, los rangos de consolidaci6n se encuentran en hojas diferentes, aunque no necesariamente deben estar todos en hojas diferentes.

La secuencia de acciones se muestra en la figura 03.

2 I

A------, 8 I c I 0 I E I F I G H
I' [Con~ol i da r ..:!:.
El0 - -
• E_ul'ioion:
JJ
ISWlm<l 3 '11

3

4 5"""

7

8 g-

--

10

___!!__ 12 ----:u;-

14

15, m 17-

18

19' 20

Refere!I!.da,:

E;';<lQlilil<lr.".

Todas las, referemIi<ls:

..:J ..:.I

Sem<lli!<I U.!~$2,: $J$5.97 Sem<llil<l 2_1:§A$2: $J.~5 Sem<lIil<l3.1:$A$2: $J$5.26 Sem<lIi!<l41~$2: $J~41

r'Usar rl]'illlos, en---

r;; Fi 1<1 '~u perior

r.r Co IlJImlii a i2qU ierda

~rEgar

~Iiminar

r Crear ';.:in[i]Jlos <[(In los datos clIO nriqem

j------:------:--t _ ____,....-_"~---:-Ptar __ cEr-:--t ____,

Figura 3

IIII

En esta imagen se ha seleccionado el range correspondiente a la hoja Semana1 y se procede a <Agregar> a la consolidaci6n la Semana2 y todas las otras seman as.

Nota 3

Pagina 8 de 154

Programacion de macros en Excel

Recuerde que, si desea una consolldaclon efectuando una suma, promedio, etc. Sobre la misma columna de consolldaclon, dicha columna debe tener la misma cabecera en todos los componentes (rangos) de la consolldaclon. En este ultimo caso, en lugar de tener 2001, 2002, etc, se debiera tener un mismo rotulo,

Consolidaci6n de libros

Igualmente, si los rangos a ser consolidados estuvieran en libros diferentes, tambien se pueden realizar dicha accion. Para elio es necesario que esten abiertos todos los libros a ser consolidados asf como un nuevo libro donde se realizara la misma.

Tab/as dinamicas

Una de las herramientas de mayor uso en el Excel es la tabla dlnamica. Los datos a ser empleados provienen de una tabla 0 base de datos en general. Tiene la caracterfstica de ser dlnamica por cuanto los elementos que conforman su estructura pueden ser modificados (ariadiendo 0 quitando campos) en el instante. Una tabla dinamlca esta ligada a un grafico dlnamico y cualquier cambio de uno afecta al otro.

Una tabla dinamlca puede construirse a partir de los datos contenidos en un libro del Excel, con los datos provenientes de una consulta por ejemplo del MS Access 0 directamente del MS Query.

Del mismo modo, una tabla dlnarnlca puede ser construida desde un cubo OLAP (On Line Analitical Processing), aunque este ya tiene diseriado las dimensiones (cada una de las cuales generan de por sf una tabla), podemos insertar en la misma tabla mas de una dimension, enrlqueclendola aun mas.

Si los datos que se tienen no estan en formato del Excel, no son consultas 0 no tienen un formato que permita acceder autornatlcarnente desde el Excel, podemos realizar el proceso de conversion mediante el uso de la secuencia: <Datos> - eObtener datos externos» - -dmportar datos>.

Pagina 9 de 154

Programacion de macros en Excel

Las siguientes figuras muestran la secuencia de acciones necesarias para construir una

2003 2003

Elij.-doode' deses eml"",r ellniorme de tabla,oinamic" ----- 2003 2003

ro !'Iueva tJoja de cll(ulo 2003

r H~ja de .;jlrul~ ~'i ,~te 20 03

Ubicaaon:" .-'1 --------------:::00=. 2003

20m I ~====::=:;:;:====~I~Af::e~p~ta~['~~e~~m~Oe~la[~I!!t,2003 ~1 :..l 2003

,Seleaione 'los datos, que desee: aRali'ar'----------,~ (0" ~ele'done uM 1,;1>1, 0 "rig~

Tab_la 0 ranqe: IMMelM1MiU411.pLm (". U~Uc:e una i=weilt~·,Q~ da0~,·~*tma

Ele,&!ir "tIJne:x:l(ih , , I

Nambre de, mnEXJOn';

Figura 4

2110812003 15/10/2003

Nota 1:

Para obtener una tabla dlnarnlca en Excel 2003 siga el siguiente procedimiento:

Hacer clic en cualquier celda dentro del rango de los datos.

<Datos> - -dntorme de Tablas y Gratlcos dlnamlcoss - «Llsta 0 base de datos de Microsoft Excel> - <Siguiente> - Verificar si el rango que se muestra es el indicado - <Siguiente> . En la ventana siguiente seleccionar d6nde se desea el resultado y luego hacer clic en <Diseno>. En esta ventana debe seleccionar el 0 los campos que debe colocar en el area de fila, en el area de columna y en area de datos (a los cuales de preferencia se debe colocar los campos numerlcos),

Nota 2:

Como se aprecia en (1), se debe hacer clic en la <Tabla dlnarnlcas de la ficha -dnsertar», EI cursor debe estar dentro de los datos a fin de disponer del rango ya seleccionado como se muestra en (3). En esta ventana se debe decidir si la tabla se desea en una nueva hoja 0 en

Pagina 10 de 154

También podría gustarte