2. Para obtenerinformacióngeneral sobre nuestrosproductosyservicios,porfavorpóngase en
contacto con nuestroDepartamentode atenciónal cliente dentrode la EstadosUnidosen
877-762-2974, fuerade losEE.UU. en317-572-3993 o enviarporfax 317-572-4002.
Para obtenerasistenciatécnica,visitewww.wiley.com/techsupport.
Wileypublicaenunavariedadde formatosimpresosyelectrónicosyde impresiónbajo
demanda.Parte del material incluidoconlanorma versionesimpresasde este libronopueden
serincluidosenloslibroselectrónicosoenlaimpresiónbajodemanda.Si este librose refierea
losmediosde comunicacióntales comounCD o DVDque no está incluidoenlaversiónque
haya adquirido,ustedpuede descargareste material en http://booksupport.
wiley.com.Paraobtenermásinformaciónacercade losproductosde Wiley,visite
www.wiley.com.
Bibliotecadel Congresode control el númeroestádisponible enel Editor.
ISBN 978-1-118-28121-5 (pbk);978-1-118-33068-5 (ebk);978-1-118-33353-2 (ebk);978-1-118-
33466-9 (ebk)
FabricadoenlosEstados Unidosde América
10 9 8 7 6 5 4 3 2 1
Acerca de losautores
Mike AlexanderesunMicrosoftCertifiedApplicationDeveloper(MCAD) yautorde varios
libros enel análisisde negocioavanzadoconMicrosoftAccessyExcel.Cuentaconmás de 15
años de experienciaconsultoríaydesarrollode solucionesde Office.Michaelhasido
nombradoMVP de Microsoftpara su constantescontribucionesalacomunidadExcel.Ensu
tiempolibre,se encuentraconunsitiotutorial gratuito,www.datapigtechnologies.
com, donde comparte Excel yAccessconsejos.
JohnWalkenbachesautorde más de 50 librosde hojasde cálculoy vive enel surde Arizona.
Visitasusitiowebenhttp://spreadsheetpage.com.
Dedicación
A María
- Mike Alexander
Agradecimientosde losautores
Nuestrosmásprofundosgraciasa la brillante equipode profesionalesque ayudaronallevar
este libroa buentérmino.
Reconocimientosdel editor
Estamosorgullososde este libro;envíenossus comentarioshttp://dummies.custhelp.com.
Para otros comentarios,porfavorpóngase encontactocon nuestroDepartamentode
atenciónal cliente dentrode losEE.UU. al 877-762-2974,
fuerade losEE.UU. al 317-572-3993, o fax 317-572-4002.
Algunasde laspersonasque ayudarona llevareste libroal mercadosonlassiguientes:
4. Mapa de contenidos
Introducción.1
Parte I: Introduccióna Excel Macros ..........................................5
Parte II: Trabajar con librosde trabajo....................................................37
Parte III: Automatizaciónde tareasHojade trabajocon macros ..........................71
Parte IV: Selección ymodificaciónde Rangos.......................................103
Parte V: Trabajocon datos ...........................................................137
Parte VI: Trabajar con tablasdinámicas................................................187
Parte VII:ManipulaciónGráficosconMacros ....................................233
Parte VIII:E-Mailingdesde Excel .....................................................253
Parte IX: La integraciónde Excel yotras aplicacionesofimáticas.................273
Índice.302
5. Tabla de contenidos
Introducción.1
TemasCubiertos.1
Lo que necesitassaber.2
Lo que ustednecesitatener.2
Cómoestá organizadoeste libro.2
Parte I: PrimerospasosconExcel Macros. 3
Parte II: Trabajar con librosde trabajo. 3
Parte III: Automatizaciónde tareasHojade trabajocon macros.3
Parte IV: La selecciónymodificaciónde rangos.3
Parte V: Trabajocon datos. 3
Parte VI: Trabajar con tablasdinámicas.3
Parte VII:ManipulaciónGráficosconmacros. 3
Parte VIII:E-Mailingdesde Excel.4
Parte IX: La integraciónde Excel yotras aplicacionesde Office.4
Convenioseneste libro.4
¿Qué significanlosiconos.4
Sobre el sitiowebdel compañero.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 4
Parte I: Introduccióna Excel Macros ..................................5
Familiarizarseconlosfundamentosde grabaciónde macros.7
Comparandoabsolutayrelativade grabaciónde macros. 11
Grabaciónde macros con referenciasabsolutas.11
Grabaciónde macros con referenciasrelativas.13
En cuanto a otros conceptosde grabaciónde macros. 15
Extensionesde archivoMacro habilitado.15
La seguridadde macrosenExcel 2010. 16
Las ubicacionesde confianza.16
El almacenamientode macrosenel librode macros personal.17
Asignarunamacro a un botóny otroscontrolesde formulario.17
La colocaciónde unamacro en labarra de herramientasde accesorápido.19
TrabajandoEn el Editor de Visual Basic.19
6. La activaciónde laVBE. 19
ComponentesVBEcomprensión.19
Trabajar con la ventanadel proyecto.21
Adiciónde unnuevomódulode VBA.22
Extracciónde un módulode VBA.23
Trabajar con una ventanade código.24
Minimizarymaximizarventanas.24
ObtenercódigoVBA enunmódulo.25
Personalizaciónde laVBA MedioAmbiente.27
La pestañaEditor.27
La pestañaEditorde formato.29
7. La pestañaGeneral.30
La fichade acoplamiento.31
Descubriendoel modelode objetosde Excel.31
La comprensiónde los objetos.31
Coleccionescomprensión.32
La comprensiónde laspropiedades.33
Métodosde comprensión.33
Tomar una breve miradaenvariables.34
Acerca de lasmacros en este libro.35
Obtenciónde losarchivosde ejemplo.35
El usode losarchivosde ejemplo.35
Cosasa tenerencuenta.36
Parte II: Trabajar con librosde trabajo............................................37
Macro 1: Creaciónde unnuevolibrode trabajodesde cero.39
Cómofunciona.39
Cómousarlo.40
Macro 2: Guardar un librode trabajocuandoun particularde la célulase cambia.41
Cómofunciona.41
Cómousarlo.42
Macro 3: Guardar un librode trabajoantesdel cierre.43
Cómofunciona.43
Cómousarlo.44
Macro 4: Protegerunahojade cálculoen el librode trabajoenCerrar. 46
Cómofunciona.46
Cómousarlo.46
Macro 5: desprotegerunahojade trabajo enlibroabierto.48
Cómofunciona.48
Cómousarlo.48
Macro 6: Abrirunlibrode trabajo a una fichaespecífica.50
Cómofunciona.50
Cómousarlo.50
Macro 7: Abrirunlibrode trabajo específicosdefinidosporel usuario.52
18. Cómofunciona.282
Cómousarlo.283
Macro 96: espacioenuna base de datosAccessdesde Excel.284
Cómofunciona.284
Cómousarlo.285
Macro 97: Envío de datos de Excel a un documentode Word.286
Cómofunciona.286
Cómousarlo.288
Macro 98: Simulaciónde combinarcorrespondenciaconundocumentode Word.289
Cómofunciona.289
Cómousarlo.292
Macro 99: Envío de datos de Excel a una presentaciónde PowerPoint.293
Cómofunciona.293
Cómousarlo.295
Macro 100: El envíode todosListasde Excel a unapresentaciónde PowerPoint.296
Cómofunciona.296
Cómousarlo.298
Macro 101: Convertirunlibrode trabajoenuna presentaciónde PowerPoint.299
Cómofunciona.299
Cómousarlo. 301
19. Introducción
En su sentidomásamplio,unamacrode Excel esuna secuenciade instruccionesque
automatizaalgúnaspectode Excel para que puedatrabajarde maneramás eficiente ycon
menoserrores.Ustedpuede crearunamacro, por ejemplo,para formateare imprimirsu
informe de ventasde finde mes.Despuésse desarrollólamacro,puede ejecutarel macropara
realizarmuchosprocedimientosque requierenmuchotiempode formaautomática.
Las macros estánescritasenVBA,siglasde Visual Basicpara Aplicaciones.VBA esenrealidad
una programación lenguaje desarrolladoporMicrosoft,yesuna herramientaque se utiliza
para desarrollarprogramasque controlanExcel.
La terminologíade programaciónde Excel puede serunpococonfuso.Porejemplo,VBA esun
lenguaje de programación, sinoque tambiénsirvecomounlenguaje de macros.¿Cómose
llamaalgoescritoenVBA y ejecutadoen Excel?¿Esuna macro o se trata de un programa?
Sistemade Ayudade Excel a menudose refiere alosprocedimientosde VBA comomacros,por
loesta esla terminologíautilizadaeneste libro.Perotambiénse puede llamaracódigoVBA un
programa.
Tambiénveráel términoautomatizarlolargode este libro.Este términosignificaque unaserie
de pasos son completadoautomáticamente.Porejemplo,si escribesunamacroque agrega
colora algunascélulas,imprime el hojade cálculo,yluegoeliminael color,ustedha
automatizadoesostrespasos.
La gente utilizaExcel paramilesde diferentestareas.Éstossonsóloalgunosejemplos:
➤ Mantenerlistasde cosas talescomonombresytransaccionesde losclientes
➤ Presupuestaciónyprevisión
➤ Analizardatoscientíficos
➤ Creaciónde facturasy otras formas
➤ Desarrollartablasde datos
La listapodríaseguiry seguir.El puntoessimplemente que Excelse utilizaparauna amplia
variedadde tareas,y todoslosque leaneste librotiene diferentesnecesidadesyexpectativas
con respectoa Excel.Una cosa virtualmente cadalectortiene encomúneslanecesidadde
automatizaralgúnaspectode Excel.Esoes loque VBA (y esto libro) se trata.
TemasCubiertos
Este libroaborda el temade las macros de Excel con el reconocimientode que la
programacióncon VBA toma tiempoypráctica- el tiempoque ustednopuede tenereneste
momento.De hecho,muchosanalistasnotienen el lujode tomarunpar de semanasde
descansopara convertirse enunexpertoenVBA.Asíque enlugarde la mismaengeneral
visióngeneral de lostemasde VBA,este libroofrece 101 del mundoreal másutilizadoExcel
Macros.
Cada segmentodel librodescribe unproblemacomúnque necesitaserresueltoyproporciona
la real macro de Excel para resolverel problema,juntoconunaexplicacióndetalladade cómo
funcionalamacro y dónde utilizarlamacro.
20. Lo que necesitassaber
Con el finde obtenerel máximoprovechode estelibro,que se suponeque tieneuncierto
conjuntode habilidades.El candidatoideal paraeste librotiene experienciatrabajandocon
datosen Excel,juntoconla familiaridadconel básico conceptosde análisisde datos,tales
como trabajarcon tablas,la agregaciónde datos,realizarcálculos, ylacreaciónde gráficos.
Lo que hay que tener
Ustednecesitarálasiguiente conel finde descargaryutilizarlosejemplosdestacadoseneste
libro.
➤ Una copia con licenciade Excel 2007 o Excel 2010
➤ Una conexiónaInternetparapoderdescargar losarchivosde ejemplo
Cómoestá organizadoeste libro
El estilode este libroestáenel formatode losConsejosytrucoslibros,donde cadasegmento
muestracómo para realizarunatarea comúna travésde macros de Excel.Estole permite,
nuestrolectorestimada,utilizael librocomoun referenciaprácticapara labúsquedade una
macro que resuelve unproblemacomún.
Cada segmentodel librosigueestasencillaconstrucción:
➤ El problema
➤ La soluciónmacro
➤ ¿Cómofunciona?
Despuésde leercadasegmentode este libro,usteddeberíasercapaz de
➤ implementarinmediatamente lamacrorequeridaExcel
➤ Comprendercómofuncionalamacrodados
➤ Reutilizarlamacrodada enotros librosoen conjuntoconotras macros
Los capítulosde este librose agrupanen nueve partesprincipales.
21. Parte I: PrimerospasosconExcel Macros
Parte I sirve comouna introducciónaExcel Macros y VBA engeneral.Aquí,ustedobtieneun
resumenconcisode cómofuncionaVBA conExcel,que le da el fundamentobásicoque
necesitaparatrabajar con los101 macrosen este libro.
Parte II: Trabajar con librosde trabajo
En la Parte II se descubre cómohacer referenciaalibrosde trabajoa travésde VBA para hacer
cosas interesantescomoautomáticamente crearnuevoslibros,evitarque losusuarioslibros
de cierre,copiasde seguridadautomáticaslibros,ymuchomás.
Parte III: Automatizaciónde tareasHojade trabajocon macros
Parte III se centra enlastareas de automatizaciónrelacionadosconhojasde cálculo.Tantosi
se trata unhidingtodaslashojasenunalibro,o imprimirtodaslashojasal mismotiempo,
muchasde lastareas se puedenautomatizarparaahorrar tiempoyganar eficiencia.Enesta
parte cubrimosalgunasde las macrosmás útilesrelacionadosconlashojasde trabajo.
Parte IV: SelecciónyrangosModificación
Cuandoustedestátratando de automatizarsutrabajo a travésde VBA,ustedencontraráque
la navegación de suhojade cálculosigue siendounaparte importante del procesode
zutomatización.Enmuchoscasos,esnecesarionavegarymanipulardinámicamenterangosde
Excel,tal como loharía manualmente - sóloatravésde VBA
código.Parte IV proporcionaalgunasde lasmacros más utilizadosentérminosde navegacióny
de trabajo con rangos.
Parte V: Trabajocon datos
Parte V muestraalgunasde lasmacros más útilesque puede utilizarparatransformar
dinámicamentelosdatosensuslibros.Laideaes que se puede ejecutarvariasde estasmacros
enuna secuenciaque,básicamente,automatizael lavadoylaconformaciónde susdatos.
Parte VI: Trabajar con tablasdinámicas
Algunastareasrelacionadastabladinámica-nosonfácilesde manejarconlagrabadora de
macros. Aquíes donde laParte VIcentra su atención.Aquí,cubrimoslosescenariosmás
comunesdonde macrosayudana ganar eficienciacuandose trabajacontablas dinámicas.
Parte VII:ManipulaciónGráficosconmacros
En la Parte VIIa descubrircómoVBA puede ayudara ahorrar tiempoytrabajar con gráficosde
maneramás eficiente.Aquíhacerfrente alosaspectosde la cartografía que se prestana un
poco de automatización.
Parte VIII:E-correodesde Excel
En la Parte VIIIdescubriralgunosejemplosde cómose puede integrarExcel yOutlook.Aquí
vesejemplosde macrosque envíanmensajesde correoelectrónico,enviararchivosadjuntos,
y tirar de archivosdirectamente de Outlook.
Parte IX: La integraciónde Excel yotras aplicacionesde OfficeDatosde Excel se utilizaa
menudoenotrasaplicacionesde Office:MicrosoftAccess,MicrosoftWordyMicrosoft
22. PowerPoint.EnlaParte IXnos fijamosenalgunasde lasmacros útilesque puedesponeren
práctica para tenerExcel integrarconalgunasotras aplicacionesde Office.
Convenioseneste libroLoscomandosde menúde este libroestánseparadosporunaflecha
(➜).Porejemplo,File➜Opensignificaira En el menúArchivo,hagaclicen él y seleccione
Abrirenla listaque aparece.
Todo el códigoeneste libroaparece enunafuente monoespaciada,al igual que losmétodos,
propiedades,valoresyargumentos.
Textode lostiposde lectoresaparece ennegrita.
Textode marcador de posiciónque debe serreemplazadoconinformaciónespecíficaasus
necesidadesaparece encursiva.
¿Qué significanlosiconos
UtilizamosiconosTipparaindicarun punterose debe archivarpara futurasconsultas.
Consejossuelehacersuvidamás fácil.
El iconoNotaindicaque debe prestarespecial atenciónaesto.
UtilizamosiconosPrecauciónparaindicarlascosasque puedencausarproblemas.
Sobre el sitiowebdel compañero
Cada macro eneste librotiene unarchivode muestraasociada.Estosarchivosde ejemplole
permitenverlamacro enacción,así comoque le da la posibilidadde revisarel código.Los
archivosde ejemplose puedendescargardesde sitiowebcomplementariode este libroen
www.wiley.com/go/101excelmacros.
23. PARTE I
EmpezandoconExcel Macros
Esta parte esuna introducciónalasmacros de Excel,que abarca todo loque necesita saber
acerca de lasmacros de Excel y
VBA para empezarcon los101 macros en todoel restode este libro.
26. Introducción
Excel Macros
Ustedno necesitaserunusuarioavanzadopara crear y utilizarmacrosVBA simples.Inclusolos
usuariosocasionalespuedensimplemente
enciendamacrograbadorde Excel.
Grabaciónde una macro escomo laprogramaciónde unnúmerode teléfonoensuteléfono
celular.Ustedprimeromarcarmanualmente
y guardar un número.Luego,cuandolodesea,puede volveramarcar losnúmerosconel
toque de un botón.
Al igual que con losnúmerosenun teléfonocelular,puedegrabarsusaccionesenExcel
mientras
realizarlas.Mientrasgraba,Excel se llenaenel fondo,latraducciónde laspulsacionesdel
tecladoy
clicsdel ratón para códigoVBA escrito.Despuésde que hayagrabadouna macro,puede
reproduciresasacciones
cualquiermomentoque desee.
Esta piezasirve comouna introducciónaExcel Macros y VBA en general.Aquí,le damosun
resumenconcisode cómofuncionaVBA conExcel,que le da el fundamentobásicoque
necesitaparatrabajar
con los101 macros que figuraneneste libro.
Familiarizarsecon
Conceptosbásicosde grabaciónde macros
Para iniciarlagrabaciónde suprimeramacro, esnecesarioencontrarprimerolagrabadorade
macros, que estáenel
FichaProgramador.Desafortunadamente,Excelque sale de lacajacon la fichaProgramador
escondido - ustedpuede
no verloensuversiónde Excel enunprimermomento.Si vaa trabajarcon macros VBA,usted
querráhacer
Asegúrese de que lafichaProgramadoresvisible.Paramostrarestaficha
1. Seleccione OpcionesOffice➜Excel.
2. En el cuadrode diálogoOpcionesde Excel,seleccione Personalizarcintade opciones.
3. En el cuadrode listade la derecha,coloque unamarcade verificaciónjuntoal desarrollador.
4. Haga clicen Aceptarpara volveraExcel.
Ahoraque tiene lafichaProgramadormuestraenla cinta de opcionesde Excel,se puede
ponerenmarcha el Macro
27. Grabadora seleccionandoGrabarmacro de lafichaProgramador.Esto activa el cuadrode
diálogoGrabar macro
caja, comose muestraenla Figura1-1.
Figura1.1: El cuadro de diálogoGrabar macro.
Estas sonlas cuatro partesdel cuadro de diálogoGrabar macro:
➤ Nombre de macro: Esto debe explicarse porsímismo.Excel daun nombre pordefectoa la
macro,
como Macro1, perousteddebe darsu nombre macro másdescriptivode loque enrealidad
lohace. Porejemplo,esposible que el nombrede unamacro que da formatoa una tabla
genéricacomoformattable.
➤ Teclade atajo:Cada macro necesitaunevento,oalgoasí suceda,para que se ejecute.Este
evento
puede serunapulsaciónde botón,unaaperturade libro,oeneste caso, unacombinaciónde
teclas.¿Cuándo
asignauna teclade acceso directoa la macro,entrandoenesa combinaciónde teclasque
desencadenasu
macro para funcionar.Este esun campo opcional.
➤ Macro TiendaEn: Este libroesla opciónpordefecto.Almacenamientode lamacroen este
librode trabajo
Simplementesignificaque lamacro se almacenajuntocon el archivoactivoExcel.La próxima
vezque
abrir ese libroenparticular,lamacro estádisponible parafuncionar.Del mismomodo,si usted
envíael libro
a otro usuario,el usuariopuede ejecutarlamacro,así (siempre que laseguridadde macroses
28. adecuadamente definidoporel usuario - mássobre estomás adelante enla presente parte,en
la seccióntitulada"Mirando
Otros Conceptosde grabaciónde macros").
➤ Descripción:Este esuncampo opcional,peropuede serútil si ustedtienenumerosos
macros
enuna hojade cálculoo si tiene que dara unusuariouna descripción másdetalladade loque
el
macro hace.
Con el cuadrode diálogoGrabarmacro abierto,sigaestospasosparacrear una macro simple
que entraen su
nombre enuna celdade hojade cálculo:
1. Introduzcaun nuevonombre de unasolapalabra para la macro para reemplazarel nombre
predeterminadoMacro1.Un buen
nombrarpara este ejemploesMiNombre.
2. Asignarestamacro para el accesodirectode teclasCtrl + Shift+ N mediante laintroducción
de mayúsculasN en el cuadrode edición
etiquetadoTeclade atajo.
3. Haga clicen Aceptarpara cerrar el cuadro de diálogoGrabar Macro y empezara grabar sus
acciones.
4. Seleccione cualquierceldade lahojade cálculoExcel,escribasunombre enla celda
seleccionada,yluego
presione ENTRAR.
5. ElijaDeveloper➜Code➜Stopgrabación(ohagaclicenel botón Detenergrabaciónenel
barra de estado).
El examende lamacro
La macro se grabó enun nuevomódulodenominadoModule1.Paraverel códigode este
módulo,
debe activarel Editorde Visual Basic.Puede activarel Editorde Visual Basicenunade dos
maneras:
➤ Presione Alt+F11.
➤ ElijaDeveloper➜Code➜Visual básico.
En el Editor de Visual Basic,laventanade proyectomuestraunalistade todosloslibros
abiertosycomplementos.Estalistaes
se muestracomo un diagramade árbol,que se puede expandirocontraer.El códigoque ha
grabado previamente
se almacenaenModule1 enel libroactual.Al hacer doble clicenel módulo1,el códigode
29. el móduloaparece enlaventanade código.
La macro deberíaseralgocomo esto:
Sub MyName()
‘
‘ MyNameMacro
‘
‘ Keyboard Shortcut: Ctrl+Shift+N
‘
ActiveCell.FormulaR1C1 = “Michael Alexander”
End Sub
La macro grabadaes un procedimientoSubque se nombraMiNombre.LosestadosdicenExcel
qué hacer cuandose ejecutalamacro.
Observe que Excel insertaalgunoscomentariosenlaparte superiordel procedimiento.Estos
son algunosde loscomentarioslainformaciónque aparecióenel cuadrode diálogoGrabar
macro. Estas líneasde comentarios(que empiezanconunapóstrofe) noson realmente
necesarios,yeliminarlosnotiene efectoencómose ejecutalamacro.
Si ignora loscomentarios,veráque este procedimientotieneunasoladeclaraciónVBA:
ActiveCell.FormulaR1C1 = “Michael Alexander”
Esta soladeclaraciónhace que el nombre que escribiódurante lagrabaciónparasu inserción
enla celdaactiva.
Pruebade la macro
Antesde grabar estamacro, se establece unaopciónque le asignalamacro a laShift+ Ctrl + N
combinaciónde teclasde accesodirecto.Paraprobar la macro, vuelva aExcel mediante unade
lassiguientesmétodos:
➤ Presione Alt+F11.
➤ Haga clic enel botónVerMicrosoft Excel enlabarra de herramientasEditorde VB.
CuandoExcel estáactivo,activar unahoja de cálculo.(Puede serenel libroque contiene el
módulode VBA o encualquierotrolibro.) Seleccione unCtrl + Shiftcelularypulse + N.La
macro entra inmediatamente asunombraren la célula.
En el ejemploanterior,notaque haseleccionadolacélulaparaserformateadoantes
empezadoagrabar la macro. Este paso esimportante.Si seleccionaunaceldamientrasla
macro grabadora estáencendida,lacélulareal que haseleccionadose grabaráenla macro.
En tal caso, lamacro siempre formatoque celularparticular,ynosería unamacro de propósito
general.
Ediciónde la macro
Despuésde grabaruna macro, puede realizarcambiosenél (aunque hayque saberloque
estáshaciendo).
Por ejemplo,supongaque deseaque sunombre seanegrita.Ustedpodríavolvera grabar la
macro, peroestamodificaciónessimple,de modoeditarel códigoesmáseficiente.Presione
30. Alt+ F11 para activarel Editor de Visual Basicventana.A continuación,active Module1e
insertarlasiguiente declaraciónante lainstrucciónEndSub:
ActiveCell.Font.Bold = True
La macro editadoaparece de lasiguientemanera:
Sub MyName()
‘
‘ MyNameMacro
‘
‘ Keyboard Shortcut: Ctrl+Shift+N
‘
ActiveCell.Font.Bold = True
ActiveCell.FormulaR1C1 = “Michael Alexander”
End Sub
Pona pruebaestanuevamacro,y vesque funcionacomodebería.
Comparando absolutayrelativagrabaciónde macros
Ahoraque ustedha leídoacerca de losconceptosbásicosde lainterfazMacro Recorder,esel
momentode irmás profundoycomenzara grabar macros.La primeracosa que ustednecesita
entenderantesde empezaresque Excel tiene dosmodosde grabación - absolutareferenciay
referenciarelativa.
Grabaciónde macros con referenciasabsolutas
Modo de grabación pordefectode Excel esenreferenciaabsoluta.Comoustedessaben,el
términode referenciaabsolutose utilizaamenudoenel contextode lasreferenciasde celda
que se encuentraenlasfórmulas.Cuandounareferenciade celdaenunafórmulaesuna
referenciaabsoluta,que nose ajustaautomáticamente cuandolafórmulase pegaauna nueva
ubicación.
La mejormanerade entendercómoeste conceptose aplicaalasmacros es probarlo.Abrael
Capítulo1
Ejemplode archivoFile.xlsx ygrabarun macro que cuentalas filasenlalistaBranch hojade
trabajo.(VerFigura1-2.)
Figura1-2: Su hojade trabajo pre-totalizaroncontiene dostablas.
31. El conjuntode datosde lamuestrautilizadaenlapresente parte se puede encontrarenel sitio
webel compañerode este libro.
VerIntroducciónde este libroparaobtenermásenel sitiowebde compañía.
Sigaestospasospara grabar la macro:
1. Antesde grabar, haga esté seleccionadalaceldaA1.
2. Seleccione Grabarmacro de la fichaProgramador.
3. Nombre el AddTotal macro.
4. Seleccionaeste librode trabajoenel almacenamiento.
5. Haga clicen Aceptarpara iniciarlagrabación.
En este punto,Excel estágrabandosusacciones.Aunque Excel eslagrabación,realice el
siguiente pasos:
6. Seleccione A16celularyel tipototal en lacélula.
7. Seleccione laprimeraceldavacíade la columnaD (D16) y el tipo= CONTARA (D2:D15). esto
da un recuentode losnúmerosde sucursalesenlaparte inferiorde lacolumnaD.Usted
necesitausarla funciónCONTARA porque losnúmerosde ramificaciónse almacenancomo
texto.
8. Haga clicen DetenergrabaciónenlafichaProgramadorpara detenerlagrabaciónde la
macro.
La hojade trabajo conformato deberíaparecerse ala de la Figura1-3.
Figura1-3: Su hojade trabajo posttotalizado.
Para verla macro en laacción, elimine lafilade totalesque acabade agregary reproducirla
macro siguiendoestospasos:
1. Seleccione Macrosde la fichaProgramador.
2. Busque y seleccionelamacroAddTotal que acaba de grabar.
32. 3. Haga clicen el botónEjecutar.
Si todo va bien,lamacro se reproduce susaccionesa una T y le da a su mesaun total.Ahora
aquí estála cosa. Noimportacuánto te esfuerces,nose puede hacerel trabajoAddTotal
macro enla segundatabla.
¿Por qué?Debidoaque ha grabado comouna macro absoluta.
Para entenderloque estosignifica,examinarel códigosubyacente.Paraexaminarel código,
seleccione Macrosde lafichaProgramador para obtenerel cuadrode diálogoMacro que se ve
enla figura1-4.
Figura4.1: El cuadro de diálogoMacro Excel.
Seleccione lamacroAddTotal yhaga clicen el botónEditar.Esto abre el Editor de Visual Basic
para mostrar el códigoque fue escritocuandograbó lamacro:
Sub AddTotal()
Range(“A16”).Select
ActiveCell.FormulaR1C1 = “Total”
Range(“D16”).Select
ActiveCell.FormulaR1C1 = “=COUNTA(R[-14]C:R[-1]C)”
End Sub
A16 y luegoD16, esascélulas sonexactamente loque se haseleccionado.Debidoaque la
macro se registróenabsolutomodode referencia,Excel interpretasuseleccióngamacomo
absoluto.Enotras palabras,si seleccionaA16célula,esacélulaesloque le da Excel.Enla
siguiente sección,se echaunvistazoalo que la mismamacro parece que cuandose graba en
el modode referenciarelativa.
Grabaciónde macros con referenciasrelativasEnel contextode lasmacrosde Excel,medios
relativosrelativosalaceldaactiva enese momento.Porloque debe utilizarcuidadoconsu
elecciónceldaactiva- tantoal grabar la macro referenciarelativaycuandoque loejecute.
En primerlugar,asegúrese de que el archivoFile.xlsxCapítulo1de lamuestraestáabierta.
(Este archivoestádisponibleenel compañerode este libro.páginaweb) A continuación,
utilice lossiguientespasosparagrabar una macro referenciarelativa:
1. Seleccione laopciónde referenciasrelativasUsode lafichaProgramador,comose muestra
enla Figura1-5.
33. 2. Antes de grabar, haga esté seleccionadalaceldaA1.
3. Seleccione Grabarmacro de la fichaProgramador.
4. Asigne unnombre al AddTotalRelative macro.
5. Seleccionaeste librode trabajoenel almacenamiento.
6. Haga clicen Aceptarpara iniciarlagrabación.
7. Seleccione A16celularyel tipototal en lacélula.
8. Seleccione laprimeraceldavacíade la columnaD (D16) y el tipo= CONTARA (D2:D15).
9. Haga clicen DetenergrabaciónenlafichaProgramadorpara detenerlagrabaciónde la
macro.
Figura1.5: Grabaciónde una macro con referenciasrelativas.
Creadomacro.
Seleccione MacrosenlafichaProgramador para abrirel cuadro de diálogoMacro.Aquí, elijala
AddTotalRelativemacroyhaga clic enEditar.
Una vez más,estoabre el Editor de Visual Basic para mostrarel códigoque fue escritocuando
grabó su macro.Esta vez,el códigose ve algocomo losiguiente:
Sub AddTotalRelative()
ActiveCell.Offset(15, 0).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “Total”
ActiveCell.Offset(0, 3).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “=COUNTA(R[-14]C:R[-1]C)”
End Sub
Tengaen cuentaque no hayreferenciasacualquierrangode celdasespecíficasenabsoluto
(que noseanel puntode partida"A1").Tomemosunmomentopara echarun rápidovistazoa
loque las partespertinentesde este códigoVBA realmente significar.
Observe que enlalínea2, Excel utilizalapropiedadOffsetde laceldaactiva.Esta propiedad
indicael cursor para moverunciertonúmerode célulasarribao hacia abajoy un cierto
númerode célulasizquierdaoderecha.
El códigode la propiedadOffsetle dice aExcel para mover15 hilerasde plumasy0 columnas
frente ala activa célula(eneste caso,A1).Nohay necesidadde Excel paraseleccionar
explícitamente uncelularcomolohizodurante la grabaciónde un macro referenciaabsoluta.
Para veresta macro enacción,eliminarlafilatotal paraambas tablasy hacer losiguiente:
1. Seleccione laceldaA1.
2. Seleccione Macrosde la fichaProgramador.
34. 3. Busque y seleccionelamacroAddTotalRelative.
4. Haga clicen el botónEjecutar.
5. Ahora seleccionelaceldaF1.
6. Seleccione Macrosde la fichaProgramador.
7. Busque y seleccionelamacroAddTotalRelative.
8. Haga clicen el botónEjecutar.
Tengaen cuentaque estamacro, a diferenciade la macroanterior,funcionaenambos
conjuntosde datos.Debidoaque la macro aplicalostotalesrelativosalaceldaactiva enese
momento,lostotalesse aplicancorrectamente.
Por estamacro funcione,sólohayque asegurarse de que
➤ Ustedha seleccionadolaceldade partidacorrectoantesde ejecutarlamacro.
➤ El bloque de datostiene el mismonúmerode filasycolumnascomolosdatosenel que se
grabado lamacro.
Con suerte,este sencilloejemploque hadadouna sólidacomprensiónde lagrabaciónde
macros con tantoabsolutocomoreferenciasrelativas.
En cuanto a otros conceptosde grabaciónde macros En este punto,usteddebe sentirse
cómodograbar su propiaExcel Macros. Ahora aquí estánalgunasde losotros conceptos
importantesque tendrásque tenerencuentacuandose trabajacon macros.
Extensionesde archivoMacro habilitadoEmpezandoconExcel 2007, Excel tiene unaextensión
de archivodiferente paralibrosque contienenmacros.
Ustedve,Excel 2010 librostienenlaextensiónde archivo.xlsx estándar.Losarchivosconla
extensión.xlsxnopuede contenermacros.Si el librocontiene macrosy,acontinuación,
guardar ese librocomoun.
archivoxlsx,lasmacrosse eliminanautomáticamente.Excel le advierteque el contenidode
macro se desactivaráal guardar unlibrocon macros comoun archivo.xlsx.
Si deseaconservarlasmacros, debe guardarel archivocomo un librode trabajohabilitada
para macros de Excel.Este da su archivouna extensión.xlsm.Laideaesque todosloslibros
con una extensiónde archivo.xlsxsonautomáticamente conocidoporserseguro,mientras
que ustedpuede reconocer.xlsmarchivoscomounaamenazapotencial.
La seguridadde macrosenExcel 2010
Con el lanzamientode Office 2010,Microsoft introdujocambiossignificativosensumodelode
seguridadde Office.
Uno de loscambiosmássignificativosesel conceptode documentosde confianza.Sinentrar
enla minuciatécnica,undocumentode confianzaesesencialmenteunlibroque ha
consideradoseguroal permitirmacros.
Si abre un libroque contiene macrosenExcel 2010, aparece un mensaje de labarra amarilla
bajola Cintaindicandoque lasmacros(contenidoactivo) tienenenefecto,hadesactivado.
35. Si hace clicen Habilitar,se convierte automáticamente enundocumentode confianza.Esto
significaque yanoestánse le pidapara que el contenidosiempreycuandose abre ese archivo
ensu ordenador.La ideabásicaesque si le dijiste aExcel que "laconfianza",unlibroen
particularal permitirmacros,esmuyprobable que ustedhabilitarlasmacroscada vezque lo
abra. Por lotanto,Excel recuerdaque ha habilitadomacrosantese inhibe cualquierotros
mensajesacercade macros para ese libro.
Esta es unagran noticiapara ustedy susclientes.Despuésde habilitarlasmacrossólounavez,
no loharán estar molestoporlosmensajesconstantessobre macros,yustednotendráque
preocuparse de que susalpicaderomacro-enabledfracasaráporque lasmacros se han
desactivado.
Las ubicacionesde confianzaSi laideade cualquier mensaje macroviene (inclusounavez) que
enerva,se puede establecerunubicaciónde confianzaparasusarchivos.Una ubicaciónde
confianzaesundirectorioque se consideraunazonaseguradonde sólolibrosde trabajode
confianzase colocan.Una ubicaciónde confianzapermite que ustedysusclientespara
ejecutarunamacro-enabledcuadernode trabajosinrestriccionesde seguridad,siempre y
cuandoel librose encuentraenese lugar.
Para configuraruna ubicaciónde confianza,sigaestospasos:
1. Seleccione el botónSeguridadde macrosenlafichaProgramador.
Esto activael cuadro de diálogoCentrode confianza.
2. Haga clicen el botónde ubicacionesde confianza.Estoabre el menúde ubicacionesde
confianza(verFigura1-6),que le muestratodoslosdirectoriosque sonconsideradosde
confianza.
3. Haga clicen el botónAgregarnuevoUbicación.
4. Haga clicen Examinarpara buscar yespecificarel directorioque seráconsideradouna
ubicaciónde confianza.
Despuésde especificarunaubicaciónde confianza,cualquierarchivode Excel que se abre
desde estaubicacióntendrámacroshabilitadoautomáticamente.
Figura1.6: El menúde ubicacionesde confianzale permite añadirdirectoriosque se
consideranconfiables.
36. El almacenamientode macrosensu librode macrospersonal La mayoría de las macros
creadaspor el usuarioestándiseñadosparasuuso enun libroespecífico,peroesposible que
desee utilizaralgunasmacrosentodosu trabajo.Puede almacenarestasmacrosde uso
general enel Macro Personal Librode trabajode maneraque siempre estamosasu
disposición.El Librode macros personal se carga cada vezque iniciaExcel.Este archivo,
llamadopersonal.xlsb,noexiste hastaque grabe unamacro utilizandoPersonal
Librode macros comodestino.
El Librode macrospersonal que normalmentese encuentraenunaventanaocultapara
mantenerlofuerade el camino.
Para grabar la macro enel librode macros personales,seleccione laopciónLibrode macros
personal enel cuadrode diálogoGrabar macro antesde empezarlagrabación.Esta opciónse
encuentraenlamacro tiendaEn desplegable lista.
Si almacenalas macrosen el libromacrospersonales,ustednotieneque acordarse de abrirla
Librode macros personal cuandose carga un libroque utilizamacros.Cuandose quiere salir,
Excel le preguntarási deseaguardarloscambiosen el libromacrospersonales.
Asignarunamacro a un botóny otroscontrolesde formulario
Al crear macros, esposible que desee tenerunamanera clara y fácil de ejecutarcada macro.
Un básico botónpuede proporcionarunainterfazde usuariosencillaperoeficaz.
La suerte quisoque,Excel ofreceunconjuntode controlesde formulariodiseñado
específicamente paralacreaciónde interfacesde usuariodirectamente enlashojasde cálculo.
Hay variostiposdiferentesde controlesde formulario,de losbotones(el másutilizadade
control) para lasbarras de desplazamiento.
La ideadetrásde usar uncontrol de formularioessimple.Ustedcolocauncontrol de
formularioenunahojade cálculoy después asignarunamacro a ella- es decir,unamacro que
ya ha grabado.Cuandose asignauna macro para el control, esamacro se ejecuta,ojuega,
cuandose hace clic enel control.
Tómese unmomentoparacrear un botónpara lamacro AddTotalRelative creóanteriormente.
He aquí cómo:
1. Haga clicen el botónInsertarbajola fichaProgramador.(VerFigura1-7.)
2. Seleccione el control de formularioBotónde lalistadesplegable que aparece.
3. Haga clicen laubicaciónenla que deseacolocarel botón.Al colocar el control de botón en
la hojade cálculo,el cuadro de diálogoAsignarmacro,comose muestraenla Figura1-8, se
activay le pide que asignauna macro a este botón.
4. Seleccione lamacroque deseaasignaral botóny luegohaga clicenAceptar.
37. Figura1-7: Puede encontrarloscontrolesde formularioenlafichaProgramador.
Figura1-8: Asignarunamacro al botónque acaba de agregar.
Controlesde formulariofrente aloscontrolesActiveX
Observe loscontrolesde formularioyloscontrolesActiveXenlaFigura1-7. A pesarde que se
parecen,sonbastante diferente.Controlesde formularioestándiseñadosespecíficamente
para su usoen una hojade cálculo,y loscontrolesActiveXsonutilizadotípicamente en
formulariosde usuariode Excel.Comoreglageneral,siempre debeusarloscontrolesde
formulariocuandose trabajaenuna hoja de cálculo.¿Porqué?Los controlesde formulario
tienenmenosgastosgenerales,porloque funcionanmejor, yconfigurarcontrolesde
formularioesmuchomásfácil que la configuraciónde suscontrapartesActiveX.
En este punto,ustedtiene unbotónque ejecutalamacroal hacer clicenél!Tenga encuenta
que todosloscontrolesenel grupode controlesde formulario(quese muestraenlaFigura1-
7) trabajar enla mismaformaque el botónde comando,enque se asignauna macro a
ejecutarcuandose seleccionael control.
La colocaciónde unamacro en labarra de herramientasde accesorápidoTambiénpuede
asignaruna macro a un botónen labarra de herramientasde accesorápidode Excel:
1. Haga clicen labarra de herramientasde accesorápidoyseleccione Personalizarbarrade
herramientasde accesorápido.
38. 2. Haga clicen el botónde la barra de herramientas de accesorápidoa la izquierdadel cuadro
de diálogoOpcionesde Excel.
3. Seleccione Macrosenla listadesplegablede laizquierda.
4. Seleccione lamacroque desee agregaryhaga clic enel botónAgregar.
5. Cambie el iconohaciendoclicenel botónModificar.
Trabajar en el Editor de Visual Basic
El Editorde Visual Basic(VBE) esunaaplicaciónindependienteenel que escribe yeditasus
macros VBA.Ustedno se puede ejecutarel VBEporseparado;Excel debe estarenejecución
para que el VBE se ejecute.
La activación de la VBE
La formamás rápidapara activar el VBE espulsarAlt+ F11 cuandoExcel estáactivo.Para
volveraExcel,pulse Alt+ F11 de nuevo.
Tambiénpuede activarel VBEmediante el comandoDeveloper➜Code➜Visual básico.
ComponentesComprensiónVBE
Figura1-9 muestrael programaVBE con algunasde las partesclave identificados.Porque tanto
que estápasandoen enel VBE,me gustapara maximizarlaventanaparaverlo más posible.
Es probable que suventanadel programaVBE no se veráexactamente igual que loque se ve
enla Figura1-9. El VBE contiene variasventanasyesaltamente personalizable.Puede ocultar
lasventanas,reorganizarlasventanas,ventanasmuelle,yasísucesivamente.
Figura1-9: El VBEcon elementossignificativosidentificados.
Barra de menús
39. La barra de menúsVBEfuncionacomocualquierotrabarra de menúque ha encontrado.
Contiene comandos que se utilizaparahacerlas cosascon los diversoscomponentesde la
VBE.Usted tambiénencontraráque muchosde los comandosde menútienenteclasde acceso
directoasociadascon ellos.
El VBE tambiéncuentaconmenúscontextuales.Ustedpuede hacerclicenvirtualmente
cualquiercosaenel VBE y obteneruna menúcontextual de comandoscomunes.
Barra de herramientas
La barra de herramientasestándar,que estádirectamentedebajode labarrade menúpor
defecto,esunade las cuatro barras de herramientasVBE disponible.Puede personalizarlas
barras de herramientas,moverlos,mostrarotrasbarrasde herramientas,yasísucesivamente.
Si ustedestátan inclinado,utilice el comandoView➜Toolbarstrabajarconbarras de
herramientasVBE.Lamayoría de lagente sólodejarloscomoestán.
Ventana de proyecto
La ventanade proyectomuestraundiagramade árbol que muestracada libro abierto
actualmente enExcel (Incluidosloscomplementosylibrosocultos).Hagadoble clicenlos
elementosparaexpandirocontraerellos.Nosotrosdiscutirestaventanaconmásdetalle enla
sección"Trabajarcon la ventanadel proyecto"másadelante en estaparte.
Si la ventanaProyectonoesvisible,presioneCtrl +R o utilice el comandoView➜Project
Explorer.Esconderlaventanadel proyecto,hagaclicenel botónCerrar enla barra de título.
Alternativamente,hagaclicencualquierlugarenel Ventanadel proyectoyseleccioneOcultar
enel menúcontextual.
Ventana Código
Una ventanade códigocontiene códigoVBA.Cadaobjetoenunproyectotiene unaventanade
códigoasociado.A ver ventanade códigode un objeto,hagadoble clicenel objetoenla
ventanaProyecto.Porejemplo,paraverla ventanade códigopara el objetoSheet1,haga
doble clicenSheet1enla ventanaProyecto.A menosque ustedtiene añadidoalgode código
VBA,laventanaCódigoestarávacía.
Encontrará más informaciónacercade lasventanasde códigomás adelante enlasección
"Trabajar con una ventanade código"de estaparte.
Ventana Inmediato
La ventanaInmediatopuede onoservisible.Si noestávisible,presione Ctrl +G o utilizarel
View➜ ComandoventanaInmediato.Paracerrarla ventanaInmediato,hagaclicenel botón
Cerrar enla barra de título(Ohaga clic encualquierlugarenlaventanaInmediatoyseleccione
Ocultaren el menúcontextual).
La ventanaInmediatoesmásútil paraejecutardirectamente lasdeclaracionesde VBA ypara
depurarsu código.Si ustedapenasestácomenzandoconVBA,estaventananoserá tan útil,
por loque no dude enocultarloy liberaralgode espacioenlapantallapara otras cosas.
Trabajar con la ventana del proyecto
40. Cuandose trabaja enel VBE, cada librode Excel y complementoque eslibre esunproyecto.
Puedespensarenunproyectocomouna colecciónde objetosdispuestoscomounesquema.
Puede ampliarunproyectohaciendoclicel signomás(+) a la izquierdadel nombredel
proyecto enla ventanadel proyecto.Contratarunproyectode clicen el signomenos(-) ala
izquierdadel nombre de unproyecto.Obien,puedehacerdoble clicenloselementospara
ampliary contratarlos.
La figura1-10 muestraunaventanade proyectocon dosproyectosfiguran:unlibro
denominadoLibro1yun librollamadoBook2.
Figura1-10: Esta ventanaProyectoenumeradosproyectos.Ellosse expandenparamostrar
sus objetos.
Cada proyectose expande paramostraral menosunnodollamadoMicrosoftExcel Objetos.
Este nodo se expande paramostrarun artículo para cada hoja del libro(cadahojase considera
un objeto),yotro objetollamadoThisWorkbook(que representael objetoWorkbook).Si el
proyectotiene cualquierVBA módulos,el listadode proyectostambiénmuestraunnodo
Módulos.
Adiciónde un nuevomódulo de VBA
Al grabar una macro, Excel insertaautomáticamente unmódulode VBA paramantenerel
códigograbado.La libroque tiene el móduloparalamacro grabadadepende de donde usted
eligióparaalmacenarel grabadomacro, justoantesde empezarlagrabación.
En general,unmódulode VBA puede contenertrestiposde código:
➤ Declarations: Uno o más estadosde informaciónque ustedsuministre aVBA.Porejemplo,
puede declararel tipode datospara las variablesque vaa utilizar,oestableceralgunaotraen
todoel módulo opciones.
41. ➤ Sub procedures: Un conjuntode instruccionesde programaciónque realizaalgunaacción.
Todosregistrado macros seránprocedimientosSub.
➤ Function procedures: Un conjuntode instruccionesde programaciónque devuelve un
solovalor(similarenconceptoauna funciónde hojade cálculo,comoSuma).
Un solomóduloVBA puede almacenarcualquiernúmerode procedimientosSub,
procedimientos,funcionesydeclaraciones.
Cómoorganizarun móduloVBA estotalmente suya.Algunaspersonasprefierenmantener
todosu CódigoVBA para una aplicaciónenunsolomóduloVBA;a otroslesgustadividirel
códigoenvariosdiferentesmódulos.Esunaelecciónpersonal,al igual que laorganizaciónde
losmuebles.
Sigaestospasospara añadirmanualmente unnuevomódulode VBA aun proyecto:
1. Seleccione el nombre delproyectoenlaventanadel proyecto.
2. ElijaInsert➜Module.
O puede
1. Haga clicen el nombre del proyecto.
2. ElijaInsert➜Module enel menúcontextual.
El nuevomódulose añade auna carpeta de módulosenlaventanadel proyecto(verFigura1-
11). cualquiermódulosse creaenun librodeterminadose colocanenestacarpetaMódulos.
Figura1-11: módulosde códigosonvisiblesenlaventanadel proyectoenunacarpetallamada
módulos.
Extracción de un módulode VBA
Es posible que deseeeliminarunmódulode códigoque yano esnecesario.Paraello,siga
estospasos:
1. Seleccione el nombre delmóduloenlaventanadel proyecto.
2. Elijaxxx File➜Remove,dondexxx esel nombre delmódulo.
42. O
1. Haga clicen el nombre del módulo.
2. Seleccione Eliminarxxx enel menúcontextual.
Excel,siempre tratandode evitarque haciendoalgoque te arrepentirás,le preguntasi desea
exportarel códigoenel móduloantesde eliminarlo.Casi siempre,nolohace.(Si lohaces
quiere exportarel módulo,consultelasiguiente sección,"Trabajarconuna ventanade
código.") Ustedpuede quitarmódulosVBA,peronohayformade eliminarlosotrosmódulos
de código - aquellosparalosobjetosde hojaoThisWorkbook.
Trabajar con una ventana de código
Comollegara dominarcon VBA,ustedpasamuchotiempotrabajandoenventanasde código.
Las macros que grabe se almacenanenunmódulo,yustedpuede escribircódigoVBA
directamente enunmódulode VBA.
Minimizary maximizar ventanas
Ventanasde códigosonmuyparecidosa ventanasde libroenExcel.Ustedpuede minimizarlos,
maximizarellos, cambiarel tamañode ellos,ocultarlos,reorganizarlos, yasísucesivamente.La
mayoría de las personaslesresultamuchomásfácil para maximizarel Ventanade códigoque
estántrabajando.Si lohace, le permite vermásde códigoy le impide obtener distraído.
Para maximizarunaventanade código,hagaclic en el botónde maximizarenlabarra de título
(justoal ladode laX).O solo haga doble clicenla barra de títulopara maximizarlo.Para
restauraruna ventanade códigoa su tamaño original,hagaclicenRestaurar botón.Cuandose
maximizaunaventana,labarra de títulono es muyvisible,porloque encontrarásenel botón
Restaurara laderechadel tipode una preguntapara lacaja de la Ayuda.
A veces,esposible que deseetenerdosomásventanasde códigovisibles.Porejemplo,es
posible que desee compararel códigoendosmódulosocopiarel códigode unmóduloa otro.
Ustedpuede arreglarel ventanasmanualmente,outilizarel Window➜Tile horizontalmente o
verticalmenteWindow➜Tilecomandosparaorganizarlosautomáticamente.
Puede cambiarrápidamente entreventanasde códigopulsandoCtrl +Tab. Si repite esa
combinaciónde teclas, ustedguardael ciclismoatravésde todaslas ventanasde código
abierto.PresionandoShift+Tab Ctrl + ciclosa través las ventanasenordeninverso.
MinimizandounaventanaCódigoconsiguefueradel camino.Tambiénpuedehacerclicenel
botónCerrar de la ventanaenun Barra de títulode la ventanaCódigoparacerrar
completamentelaventana.(Cerrarunaventanajustoloesconde;noloharás perdernada.)
Para abrir de nuevo,bastacon hacer doble clicenel objetoapropiadoenlaventanadel
proyecto.
Trabajar con estasventanasCódigosuenamásdifícil de loque realmente es.
Obtenercódigo VBA enun módulo
Antesde que puedahaceralgo significativo,debe teneralgo de códigoVBA enel módulode
VBA.Puedes obtenerel códigoVBA enunmóduloVBA de tresmaneras:
➤ Utilice lagrabadora de macros de Excel para registrarsus accionesylosconvierte acódigo
VBA
43. ➤ Introducirel códigodirectamente
➤ Copiael códigode un móduloypegarloenotro
Has descubiertoel excelentemétodoparacrearcódigoutilizandolagrabadorade macros de
Excel.
Sinembargo,notodas lastareas puedensertraducidosaVBA mediante el registrode una
macro. A menudose tiene que introducirsu códigodirectamente enel módulo.Introducción
del códigodirectamente básicamente significaobienescribiendoel códigode ti mismo o
copiary pegar el códigoque haya encontradoenotrolugar.
Introducciónyediciónde textoenunmóduloVBA funcionacomose podríaesperar.Puede
seleccionar,copiar,cortar, pegar,yhacer otras cosas al texto.
Una sola líneade códigoVBA puede sertan largocomo quieras.Sinembargo,esposible que
desee utilizarel line-continuation carácterpara romperlargaslíneas de código.Para continuar
con una solalíneade código(también conocidocomounadeclaración) de unalíneaa la
siguiente,ponerfinalaprimeralíneacon un espacioseguidoporun guiónbajo(_).Luego
continuarla declaraciónenlalíneasiguiente.He aquíun ejemplode unúnicoestado dividido
entres líneas:
Selection.Sort Key1:=Range(“A1”), _
Order1:=xlAscending, Header:=xlGuess, _
Orientation:=xlTopToBottom
Esta declaraciónse realice de lamismamanerasi se introduce enunasolalínea(sin
linecontinuationcaracteres).Tengaencuentaque lasegundayterceralíneasde esta
declaraciónsonsangría.
Sangría es opcional,peroayudaaaclarar el hechode que estaslíneasno soncomunicados
separados.
El VBE tiene múltiplesnivelesde deshacery rehacer.Si ha eliminadounadeclaraciónque
ustednodeberíatener,el usoel botónDeshacerde la barra de herramientas(opresione Ctrl +
Z) hastaque la declaraciónaparece de nuevo.Despuésde deshacer,se puedeutilizarel botón
Rehacerpara realizarloscambiosque ha deshecho.
Listopara entrar enalgunos,códigode carne y hueso?Pruebe lossiguientespasos:
1. Cree un nuevolibroenExcel.
2. Pulse Alt+ F11 para activar el VBE.
3. Haga clicen el nombre del nuevolibroenlaventanadel proyecto.
4. ElijaInsert➜Module parainsertarunmódulode VBA enel proyecto.
5. Escriba el siguiente códigoenel módulo:
Sub GuessName()
Dim Msg as String
Dim Ans As Long
Msg= “Is your name “ & Application.UserName& “?”
Ans = MsgBox(Msg, vbYesNo)
If Ans = vbNo Then MsgBox “Oh, never mind.”
If Ans = vbYes Then MsgBox “I must be clairvoyant!”
End Sub
44. 6. Asegúrese de que el cursorse encuentraencualquierlugardentrodel textoque escribióy
presione F5para ejecutarel procedimiento.
F5 es un accesodirectopara el comandoSub / UserFormRun➜Run.
Cuandose introduce el códigoque aparece enel paso5, puede notarque el VBEhace algunos
ajustesparael textoque introduzca.Porejemplo,despuésde escribirlainstrucciónSub,el
VBE insertaautomáticamenteel TermineinstrucciónSub.Ysi se omite el espacioanteso
despuésde unsignoigual,el VBEinsertalaespacioparati. Además,el VBEcambiael colory la
capitalizaciónde algúntexto.Todoestoesperfectamente normal.
Es sóloforma de mantenerlascosaslimpiasylegiblesde laVBE.
Si ha seguidolospasosanteriores,que acabade crear un procedimientoSubVBA,también
conocidocomouna macro.
Al pulsarF5, Excel ejecutael códigoysigue lasinstrucciones.Enotraspalabras,Excel evalúa
cada declaraciónyhace loque le dijiste que hiciera.Puede ejecutarestamacrocualquier
númerode veces - aunque tiende aperdersuatractivodespuésde unascuantasdocenasde
ejecuciones.
Este simple macroutilizalossiguientesconceptos:
➤ DefinirunprocedimientoSub(laprimeralínea)
➤ lasvariablesDeclaraciónde lasdeclaraciones(DIM)
➤ La asignaciónde valoresalasvariables(Msgy Ans)
➤ Concatenación(joining) unacadena (usandoel operador&)
➤ Utilizandounafunciónintegradade VBA (MsgBox)
➤ Uso de constantesintegradasde VBA (vbYesNo,vbNoyvbYes)
➤ El usode un If-Then construir(dosveces)
➤ Terminarun procedimientoSub(laúltimalínea)
Comomencionamosanteriormente,puede copiarypegarel códigoenun móduloVBA.Por
ejemplo, un Sub oProcedimientode Function que usted escribeparaunproyectotambién
puede serútil enotroproyecto.enlugar de perderel tiempovolveraentraren el código,
puede activarel móduloyutilizarlacopia-andpaste normalesprocedimientos(Ctrl +Cpara
copiary Ctrl + V para pegar).Después de pegarenun módulode VBA,puede modificarel
códigosegúnseanecesario.
Personalizaciónde la VBA MedioAmbiente
Si ustedesserioacerca de convertirse enunprogramadorde Excel,ustedpasamuchotiempo
con módulosVBA enlapantalla.Paraayudar a hacer lascosas lo máscómoda posible,el VBE
ofrece unbuennúmerode personalizaciónopciones.
Cuandoel VBE esactiva,elijaTools➜Options.Veráuncuadrode diálogoconcuatro pestañas:
Editor,EditorFormato,General y de acoplamiento.Tome unmomento paraexploraralgunas
de las opcionesque se encuentranencadaficha.
45. La ficha Editor
Figura1-12 muestralas opcionesque se accede haciendoclicenlafichaEditordel cuadrode
diálogoOpciones.utilizarel opciónenlafichaEditorde controlarcómo ciertascosas enel VBE.
Figura1-12: La fichaEditordel cuadro de diálogoOpciones.
La opciónRevisar sintaxisAuto
La Comprobarconfiguraciónde sintaxisautomáticadeterminasi el VBEaparece uncuadro de
diálogosi se descubre unerror de sintaxismientrasse estáintroduciendosucódigoVBA.El
cuadro de diálogole dice máso menosloque esel problema.
Si no seleccionaestaopción,banderasVBEsintaxiserroresmostrándolosenuncolordiferente
de el restodel código,y ustednotiene que hacerfrente aloscuadros de diálogoapareciendo
enla pantalla.
Normalmente me mantengoeste ajusteapagué porque creoque loscuadrosde diálogoson
molestosyyopor lo general puede averiguarloque estámal enuncomunicado.Antesyoera
un veteranode VBA,Iencontradoeste ajuste muyútil.
La opciónRequerirdeclaración de variables
Si la opciónRequerirdeclaraciónde variablesse establece,VBEinsertalasiguiente declaración
al comienzode cadanuevomóduloVBA inserta:
OptionExplicit
El cambiode este ajuste sóloafectaa losnuevosmódulos,nolosmódulosexistentes.Si esta
declaraciónaparece ensumódulo,debe definirexplícitamente cadavariable que utiliza.
Usando unainstrucciónDimesuna manerade declararvariables.
46. La opciónLista de miembrosautomática
Si la opciónListade miembrosautomáticase establece,VBEofrece unpocode ayudacuando
se está introduciendosucódigoVBA.
Se muestrauna listaque completaríalógicamenteladeclaraciónque estásescribiendo.Estaes
una de las mejorescaracterísticasde laVBE.
La opciónAuto Quick Info
Si se seleccionalaopciónAutoInformaciónrápida,VBEmuestrainformaciónacercade las
funcionesysusargumentosmientrasescribe.Estoessimilaralaforma enque Excel se
enumeran losargumentosparaunafuncióna medidaque empiezanaescribirunanueva
fórmula.
La opciónConsejosde datos automática
Si la opciónConsejosde datosautomáticase establece,VBEmuestrael valorde lavariable
sobre la que el cursor se encuentracolocadocuandoestásdepuraciónde código.Estose activa
de forma predeterminaday,amenudomuyútil.Tienesningunarazónparaactivar esta
opción.
El ajuste Sangría automática
El ajuste Sangría automáticadeterminasi VBEsangrade forma automáticacada nuevalíneade
códigodel igual que lalíneaanterior.Soygrande enel uso de muescasenmi código,así que
mantengoestaopción.
Por cierto,se debe utilizarlateclaTabpara sangrar el código,no labarra espaciadora.
Tambiéntúpuede utilizarShift+Tab para "Unindent"unalíneade código.Si deseasangrar
más de una línea,seleccionetodaslaslíneasque deseasangraryluegopresione lateclaTab.
Editar barra de herramientasdel VBE(que estáocultade manerapredeterminada) contiene
dos botonesútiles:SangríayAnularsangría.
Estos botonesle permitenrápidamenteguióno"Unindent"unbloque de código.Seleccioneel
códigoy haga clicen unode estosbotonesparacambiarla sangría del bloque.
La opciónde ediciónde arrastrar y soltar texto
La opciónde ediciónde arrastrary soltartexto,cuandoestáactivada,le permite copiary
movertextoarrastrandoy cayendocon el ratón.Mantengoestaopciónactivada,peronunca
louso. Yo prefierocopiarymoverutilizandoel teclado.
El defectoenFull Module Ampliaropción
El defectoenFull Module Ampliaropciónestableceel estadopordefectoparalosnuevos
módulos.(Noafectaexistentemódulos.)Si se establece,losprocedimientosenlaventanade
códigoaparecencomouna única listadesplazable.Si estaopciónesapagado,se puede ver
sóloun procedimientoalavez.Mantengoestaopciónactivada.
La opciónde ProcedimientoSeparador
47. Cuandola opciónProcedimientoseparadorestáencendido,barrasseparadorasaparecenal
final de cada procedimientode enunaventanade código.Me gusta la ideade barras
separadoras,así que mantenerestaopciónactivada.
La pestaña Editor de formato
La figura1-13 muestralafichaEditor de formatodel cuadrode diálogoOpciones.Conesta
ficha,puede personalizarlaformaenque el VBEparece.
Figura1-13: Cambiarmiradasdel VBE con la pestañaEditorde formato.
La opciónColoresCódigo
La opciónde códigode coloresle permite ajustarel colordel textoyel colorde fondoque se
muestrapara varioselementosde códigoVBA.Estoesengran medidaunacuestiónde
preferenciapersonal.Personalmente,creoque loscolorespordefectoparaserbien.Peropara
un cambiode escenario,de vezencuandojugarcon estosajustes.
La opciónde fuente
La opciónde fuente le permite seleccionarel tipode letraque se utilizaenlosmódulosde
VBA.Para obtenerlosmejoresresultados,seguirconunfont-anchofijocomoCourierNew.En
una fuente de anchofijo,todoslospersonajessonexactamente lamismaanchura.
Esto hace que el códigosea más legibleporque lospersonajesestánmuybienalineados
verticalmenteypuedesdistinguirfácilmente múltiplesespacios(que avecesesútil).
El valor de Tamaño
48. El ajuste Tamañoespecificael tamañoenpuntosde lafuente enlosmódulos VBA.Esta
configuraciónesunacuestiónde preferenciapersonal determinadoporsuresoluciónde
pantallade vídeoy lobienque suvistaestá.
La opciónMargen Indicador Bar
Esta opcióncontrolala visualizaciónde labarra indicadorade margenvertical ensusmódulos.
Usteddebe mantenerestaencendido;de locontrario,ustednoserácapaz de ver los
indicadoresgráficosútil cuandoestásdepurarel código.
La ficha General
Figura1-14 muestralas opcionesdisponiblesenlafichaGeneral del cuadrode diálogo
Opciones.Encasi todos loscasos,losvalorespredeterminadossonmuybien.
El ajuste másimportante enlafichaGeneral esError reventado.Le sugerimosque utilice la
Abrete nocontroladaentornoerrores.EstoaseguraExcel puede identificarloserroresal
escribirel código.
Figura1-14: La fichaGeneral del cuadrode diálogoOpciones.
La ficha de acoplamiento
La figura1-15 muestralafichaSoporte.Estasopcionesdeterminancómolasdistintasventanas
de la VBE comportarse.Cuandose acoplauna ventana,se fijaensulugar a lolargo de uno de
losbordesdel programaVBE ventana.Estohace que seamucho másfácil de identificary
localizarunaventanaparticular.Si apaga todo atraque,tienesungranlío, confusode las
ventanas.Engeneral,los ajustespordefectofuncionanbien.
49. Figura1-15: La pestañade acoplamientodel cuadrode diálogoOpciones.
Descubriendoel modelode objetosde Excel
En Excel,a lidiarconloslibrosde trabajo,hojasde trabajo y rangosen unabase diaria.Usted
probablemente piensade cadade estos"objetos"comoparte de Excel,enrealidadnolos
separaen sumente.Sinembargo,Excel piensasobre estosinternamente comoparte de un
modelojerárquicollamadoel modelode objetosde Excel.El objetode Excel modelo esun
claramente definidounconjuntode objetosque se estructurande acuerdoalas relaciones
entre ellos.
En estasección,le damosuna breve descripcióndelmodelode objetos,asícomoalgunosde
lasotras terminologíasylosconceptosque se encontraránenlospróximos101 macros.
La comprensiónde los objetos
En el mundoreal,puede describirtodoloque ve como unobjeto.Cuandoustedmiraa su
casa, esun objeto.Sucasa tiene habitaciones;esashabitacionestambiénsonobjetos
separados.Esashabitacionespuedentenerarmarios.
Estos armariossontambiénobjetos.Al pensarensucasa,las habitaciones,ylosarmarios,es
posible que verunarelaciónjerárquicaentre ellos.Excel funcionade lamismamanera.
En Excel,el objetoApplicationesel objetoque loabarcatodo - similara su casa. Dentroel
objetoApplication,Excel tieneunlibro.Dentrode unlibroesunahoja de cálculo.En el interior
esun gama. Estosson todoslosobjetosque vivenenunaestructurajerárquica.
Para apuntar a un objetoespecíficoenVBA,se puede recorrerel modelode objetos.Por
ejemplo, parallegaralaceldaA1 en la hoja1, se puede introducirel código:
Application.Activeworbook.Sheets(“Sheet1”).Range(“A1”).Select
50. En la mayoría de loscasos, lajerarquía del modelode objetosse entiende,porloque notiene
que escribirtodoslosniveles.
Al entrar eneste códigotambiénse que ala celdaA1 porque Excel infiere que te refieresal
libroactivo, yla hojaactiva:
Range(“A1”).Select
De hecho,si ustedtiene yacursoren laceldaA1, sólotiene que utilizarel objetoActiveCell,
negandolanecesidadde escribirenrealidadfueradel rango.
Activecell.Select
ColeccionesComprensión
Muchos de losobjetosde Excel pertenecena colecciones.Sucasase encuentradentrode un
barrio,por ejemplo, que esunconjuntode casasdenominadasunbarrio.Cadabarriose sienta
enuna colecciónde barriosllamanunaciudad.Excel consideracoleccionesde serobjetos
mismos.
En cada objetolibro,ustedtiene unacolecciónde hojasde trabajo.La colecciónde hojasde
trabajoes unaobjetoque se puede pediratravésde VBA.Cada hojade cálculoenel librovive
enla ColecciónHojasde trabajo.
Si usteddeseahacerreferenciaauna hojade cálculoenla colecciónHojasde trabajo,puede
hacer referenciaaellaporsuposición enlacolección,comounnúmerode índice a partirde 1,
o por su nombre,comotextocitado.Si ejecutaestos doslíneasde códigoenunlibroque tiene
una solahojade cálculollamadaMySheet,amboshacenlomismo cosa:
Worksheets(1).Select
Worksheets(“MySheet”).Select
Si tiene doshojasdel libroactivoque tienenlaMySheetnombresyYourSheet,en ese orden,
ustedpuede referirse alasegundahojade cálculo,escribacualquierade estasdeclaraciones:
Worksheets(2).Select
Worksheets(“YourSheet”).Select
Si usteddeseahacerreferenciaauna hojade cálculoenun librollamadoMySheetenunlibro
enparticularque no esactiva, debe calificarlareferenciade hojade cálculoyla referenciade
libro,de lasiguiente manera:
Workbooks(“MyData.xls”).Worksheets(“MySheet”).Select
La comprensiónde propiedades
Las propiedadessonesencialmente lascaracterísticasde unobjeto.Sucasa tiene uncolor,una
cantidadcuadrada, unala edad,y así sucesivamente.Algunaspropiedadesse puedencambiar
- al igual que el colorde su casa. otras propiedades nose puede cambiar- como laedadde su
casa.
Del mismomodo,unobjetoenExcel comoel objetoWorksheettieneunapropiedadde
nombre de la hojaque puede ser cambiado,yuna propiedadfilaRows.Countque nose puede.
Ustedse refiere alapropiedadde unobjetoporreferenciaal objeto,yluegolapropiedad.Por
ejemplo, se puede cambiarel nombre de lahojade cálculocambiandosupropiedadName.
En este ejemplo,estácambiandoel nombre Hoja1aMySheet:
51. Sheets(“Sheet1”).Name = “MySheet”
Algunaspropiedadessonde sólolectura,loque significaque nose puede asignarunvalora
ellosdirectamente –para ejemplo,lapropiedadText del celular.LapropiedadTextle dala
aparienciaconformatodel valorenuna celda,perono se puede sobrescribirocambiarlo.
MétodosComprensión
Los métodossonlasaccionesque se puedenrealizarcontraunobjeto.Ayudaapensaren
métodoscomoverbos.Ustedpuede pintarsucasa, porlo que enVBA,que se traduce enalgo
así como
house.paint
Un ejemplosimple de unmétodode Excel esel métodoSelectdel objetoRange:
Range(“A1”).Select
Otro es el método de copy del objeto Range:
Range(“A1”).Copy
Algunosmétodostienenparámetrosque puede dictarlaformaenque se aplica.Por ejemplo,
el métodoPaste se puede utilizarde maneramáseficazmediante ladefiniciónexplícitadel
parámetroDestination
ActiveSheet.Paste Destination:=Range(“B1”)
Tomar una breve mirada envariables
Otro conceptopodrásvera travésde las macrosde este libroesel conceptode variables.
Nosotros necesitarádedicarunaspalabrasaeste concepto,yaque juegaun papel importante
enla mayoría de las macros que se encontraráaquí.
Ustedpuede pensarenvariablescomocontenedoresde memoriaque puede utilizarensus
procedimientos.Hay diferentestiposde variables,cadatareade lacelebraciónde untipo
específicode datos.
Algunosde lostiposcomunesde lasvariablesse veráeneste libroson
➤ String: Almacenadatostextuales
➤ Integer: Almacenalosdatosnuméricosque vandesde 32.768 a 32.767
➤ Long: Almacenalosdatosnuméricosque vandesde -2147483648 a 2147483647
➤ Double: Holdspuntoflotante de datosnuméricos
➤ Variant: Almacenacualquiertipode datos
➤ Boolean: Almacenadatosbinariosque retornaVerdaderooFalso
➤ Object: Sostiene unobjetoreal apartirdel modelode objetosde Excel
El términoque se utilizaparalacreaciónde unavariable enunamacro está declarandouna
variable.Lohace mediante laintroducciónde Dim(Unaabreviaturade dimensión),el nombre
de la variable,yluegoel tipo. Porejemplo:
Dim MyText as String
Dim MyNumber as Integer
Dim MyWorksheet as Worksheet
52. Despuésde crearla variable,puede llenarlode datos.Aquíhayalgunosejemplossencillosde
cómo crearía una variable yasignarle unvalora la misma:
Dim MyText as String
Mytext = Range(“A1”).Value
Dim MyNumber as Integer
MyNumber = Range(“B1”).Value * 25
Dim MyObject as Worksheet
Set MyWorksheet = Sheets(“Sheet1”)
Los valoresque se asignana lasvariablesamenudoprovienende losdatosalmacenadosen
sus células.Sinembargo,el Losvalorestambiénpuedenserinformaciónque ustedmismo
cree.Todo depende de latareaencuestión.Este nociónse vuelvemásclaraa medidaque
avanza a travésde las macros enel libro.
Acerca de las macros eneste libro
Comomencionamosenlaintroducción,lasmacrosde este libroestándiseñadospara
conseguirque lapuestaenmarcha con VBA enla forma másrápida posible.Cadatacleadas
macro una tarea comúnque se beneficiade laautomatización.
La ideaaquíes aprenderatravésde laaplicación.Este libroestádiseñadoparaque pueda
ponerenpráctica la macro, al obtenerunacomprensiónclarade loque hace la macro y cómo
funciona.
Obtenciónde losarchivos de ejemplo
Cada macro eneste librotiene unarchivode muestraasociada.Estosarchivosde ejemplole
dan lacapacidad de verel trabajo macro, así como la posibilidadde revisarel código.También
puede utilizarlosarchivosde ejemploparacopiary pegarel códigoen suentorno(enlugarde
escribircada macro ena partir de cero).Verla sección"Acercade la Webdel compañero"en
la Introducciónde este libroparaobtenerinstruccionescompletassobre cómodescargarel
códigode ejemplo.
El uso de losarchivos de muestra
Cada macro eneste librotiene instruccionesdetalladassobre dónde copiarypegarel código.
Debierasabrael archivode ejemploasociadoalamacro, ir al Editorde Visual Basic(pulsando
Alt+ F11), y luegocopiarel código.Despuésde que hayascopiadoel código,ustedpuede ira
su libro,entraenlaEditor de Visual Basicy pegue el códigoenel lugarapropiado.
Tengaen cuentaque enalgunosde losejemplosde macroseneste libro,esnecesariocambiar
algúnaspectode la macro para adaptarse a susituación.Porejemplo,lamacro12 de la Parte
II demuestracómoabrirtodoslosarchivosde Excel enun directorio.Enese ejemplo,
señalamosala carpetaC: Temp directorio.Antesde utilizareste particularmacro,es
necesariomodificarlaparte de la macro para apuntar a su directoriode destino.
Si una macro no funcionapara usted,esprobablementeporque esnecesariocambiaralgún
componente de lamacro.Preste especial atenciónalasdireccionesde lagama,nombresde
directorios,ycualesquieraotrosnombresnomodificables.
Construimosestosvaloresnomodificablesenlamacro para finesde demostración;conla
intencióncompletaque usted,el lector,seríamodificarlamacropara cambiarestosnombres
no modificablesparaadaptarse asu situación.
53. Cosas a tener encuenta
Aquí hayalgunascosas finalesatenerencuentaal trabajar con las macrosde este libro:
➤ extensionesde archivode macro-enabled:Recuerde que cualquierarchivoque contiene
una macro debe tenerel extenstionarchivo.xlsm.Vealasecciónllamada"lasextensionesde
archivode macro-enabled"enlapresente parte paramásdetalles.
➤ seguridad Macro: Tengaen cuentaque Excel nose ejecutaráhastaque lasmacros están
habilitadas.Comotu aplicarestasmacros,esimportante entenderlospasosque ustedysus
clientes tendráque tomarparacumplircon lasmedidasde seguridadde macrosde Excel. La
secciónenla presente parte llamado"laseguridadde macrosenExcel 2010" pone de relieve
estospasos.
➤ No puede deshaceraccionesde macro:Al trabajarenExcel,a menudose puede deshacer
lasacciones que ha tomado.Esto se debe a que Excel guarda unregistro(llamadolapilade
deshacer) que registralaúltima 100 accionesque ha tomado.Sinembargo,ejecutaruna
macro destruye automáticamente el deshacer apilar,borrarel registrode lasaccionesque ha
tomado.Usteddebe tenerestoencuentaa medidaque empiezan escribiryejecutarsus
propiasmacros.No se puede deshacerlaacciónse toma enuna macro.
➤ ¿A dónde irdesde aquí:Comose mencionóantes,estasmacrosse handiseñadoparaque
puedaempezarconVBA.Si ustedencuentraunapasiónen desarrolloparaExcel VBA,es
posible que desee saberdónde obtenerun referenciamásdetalladasobre Excel VBA en
general.PermítanosrecomendamosExcel2010 Potencia ProgramaciónconVBA por John
Walkenbach(Wiley) comoel siguientepasoensuaprendizaje.Este referenciaesunaguía
completade VBA,el buceoprofundoenel modelode objetosde Excel.
54. Parte II
Trabajando con Libros de Trabajo
Esta parte contiene lasmacros relacionadascon librosde trabajo: apertura ellos,cerrarlos,
los protegen,y muchas otras acciones.
55. En estaparte
Macro 1 Creaciónde unnuevolibrode trabajodesde cero..........................................
......................39
Macro 2 Guardar un librode trabajocuandoun particularde la célulase cambia
.....................................41
Macro 3 Guardar un librode trabajoantesde cerrar ...........................................
................................43
Macro 4 Protegerunahojade cálculoen el librode trabajoCerrar ..........................................
.....................46
Macro 5 desprotegerunahojade cálculoen el librode trabajoabierto
.........................................................48
Macro 6 Abrirun librode trabajode una pestañaespecífica.........................................
.................................50
Macro 7 Aperturade unlibrode trabajo específicosdefinidosporel usuario
...........................................52
Macro 8 determinarsi unlibrode trabajoya estáabierto..............................................54
Macro 9 determinarsi unlibrode trabajoexiste enundirectorio......................................57
Macro 10 ConexionesActualizartodoslosdatosde librode trabajoenAbrir
........................................59
Macro 11 Cierre todosloslibrosde trabajoa la vez...........................................
............................................61
Macro 12 Abrirtodoslos librosde trabajoenun directorio..........................................
...............................63
Macro 13 Imprimirtodosloslibrosde trabajoenun directorio..........................................
...................................65
Macro 14 Prevenirel Cuadernode Trabajode clausurahastaque una célulase llena
..................67
Macro 15 Crear una copiade seguridadde unlibrode trabajo actual con la fechade hoy
.............................69
56. Un librono essóloun archivode Excel;tambiénesunobjetoenel modelode objetosde Excel
(unajerarquíade programaciónque expone piezasde Excel VBA).Estosignificaque usted
puede hacerreferenciaaloslibrosde trabajoa travésde VBA para hacercosas interesantes
como creanautomáticamente nuevoslibrosde trabajo,evitarque losusuarioslibros de cierre,
automáticamente copiasde loslibrosde trabajo,ymuchomás.Comenzamosnuestralistade
101 macrosaquí con unalistade las macros del librode trabajomás útiles.
Si ustedesnuevoa Excel VBA,esmuyrecomendable que primerotomaunamirada rápidaen
la Parte I. Allí,se encuentrael fundamentobásicoque necesitaparaentendermuchosde los
conceptosque se encuentranenlasmacros de estaParte.
El códigopara estaparte se puede encontrarenel sitiowebel compañerode este libro.Ver
este librode Introducciónparamás enel sitiowebde compañía.
Macro 1: Creación de un nuevolibrode trabajo desde cero
A vecesse puede quereronecesitarparacrear unnuevolibroenunaforma automatizada.Por
ejemplo, puede sernecesariocopiardatos de unatablay pegarlaenun librode trabajode
nuevacreación.La siguiente macrocopiaunrango de celdasde la hojaactivay pastas de los
datosen un libronuevo.
Cómo funciona
Esta macro es relativamente intuitivocomoustedleeatravésde las líneasdel código.
Sub Macro1()
‘Step 1 Copy thedata
Sheets(“Example 1”).Range(“B4:C15”).Copy
‘Step 2 Create a new workbook
Workbooks.Add
‘Step 3 Paste thedata
ActiveSheet.Paste Destination:=Range(“A1”)
‘Step 4 Turn off application alerts
Application.DisplayAlerts= False
‘Step 5 Save thenewly created workbook
ActiveWorkbook.SaveAs _
Filename:=”C:TempMyNewBook.xlsx”
‘Step 6 Turn application alerts back on
Application.DisplayAlerts= True
End Sub
Así escomo funciona esta macro:
1. En el paso1, simplemente copiarlosdatosque vadesde lasceldasB4 a C15.
Lo que hay que destacaraquí es que estáespecificandolacopiayla gama por su nombre.Este
esuna buenapráctica cuandose estátrabajandocon varioslibrosabiertosal mismotiempo.
2. Estamos utilizandoel métodoAdddel objetoWorkbookparacrearun nuevolibro.Estoes
equivale ahacerclicmanualmente File➜New➜BlankDocumentoenlacintade opcionesde
Excel.
3. En este paso,se utilizael métodoPaste paraenviarlosdatosque hacopiadoa la celdaA1
de la nuevalibrode trabajo.
Preste atenciónal hechode que el códigose refiere al objetoActiveSheet.Al agregarun libro,
el libronuevode inmediatoganafoco,convirtiéndose enel libroactivo.Este esel mismo
comportamientoque se veríasi tuvieraque añadirunlibroa mano.
57. 4. En el Paso4 del Código,que establece el métodoDisplayAlertsenFalse,convirtiendo
efectivamentefueraLasadvertenciasde Excel.Hacemosestoporque enel pasosiguiente del
código,ahorramosel reciéncreado librode trabajo.Podemosejecutarestamacrovarias
veces,encuyocaso, Excel intentasalvarel presentarvariasveces.
¿Qué sucede cuandointentaguardarun librovariasveces?Asíes - Excel advierte que yaexiste
un archivode por ahí con ese nombre y luegole preguntasi deseasobrescribir el archivoya
existente.Debidoaque suobjetivoesautomatizarlacreaciónde lanueva libro,que desea
suprimiresaadvertencia.
5. En el Paso5, que guarde el archivoutilizandoel métodoSaveAs.Tengaencuentaque
estamosentrandoenel pleno caminode laubicaciónde almacenamiento,incluyendoel
nombre del archivofinal.
6. Porque nosvolvimosaplicaciónalterafueraenel paso4, tenemosque volveraactivarlos.Si
no lohacemos, Excel continúasuprimiendotodaslasadvertenciasparalavidade la sesión
actual.
Cómo usarlo
Para implementarestamacro,puede copiarypegarloenun móduloestándar:
1. Active el Editorde Visual BasicpresionandoALT+ F11.
2. Haga clicen el nombre del proyecto/ libroenlaventanadel proyecto.
3. ElijaInsert➜Module.
4. Escriba o pegue el códigoenel móduloreciéncreado.Esprobable que tengaque cambiarel
nombre de la hoja,ladirecciónde rango,y la ubicaciónenGuardar.
Macro 2: Guardar un librode trabajo Cuandoun especial de la célulase cambia
A veces,ustedpuede estartrabajandoendatosque estansensible que usteddeseaguardar
cada vezque un particular,se cambiaceldao rango de celdas.Estamacro le permite definirel
rango de celdasque,cuandose cambiada,obligaal libropara guardar.
Cómo funciona
El secretode este códigoesel métodoIntersect.Porque noqueremossalvarlahojade cálculo
cuandolos cambioscelularesviejos,utilizamosel métodoIntersectparadeterminarsi lacélula
diana(lacélulaEso cambió) intersectaconlagama hemosespecificadoque el rangode
disparo(C5: C16 eneste caso).
El métodoIntersectvuelve unade doscosas:o bienunobjetoRange que define laintersección
entre lasdos gamasindicadaso nada.Así que enesencia,tenemosque tirarlacéluladiana
contra el métodoIntersectparacomprobarsi hayun valorde nada.En ese punto,podemos
hacer que el decisiónsi deseaguardarel libro.
Private Sub Worksheet_Change(ByVal Target As Range)
‘Step 1: Does the changed range intersect specified range?
If Intersect(Target, Range(“C5:C16”)) Is Nothing Then
‘Step 2: If there is no intersection, exit procedure
Exit Sub
‘Step 3: If there is an intersection, save the workbook
Else
ActiveWorkbook.Save
‘Close out theIf statement
End If
58. End Sub
1. En el paso1, simplemente estamoscomprobandosi lacéluladiana(lacélulaque ha
cambiado) se encuentraenlarango especificadoporel métodoIntersect.Unvalorde Nada
significalascataratasde célulasdianafueradel rango especificado.
2. Paso 2 obligaala macro para parar y salirdel procedimientosi nohayintersecciónentre la
céluladianayde lagama especificada.
3. Si hay unaintersección,Paso3fuegosel métodoSave del libroactivo,sobrescribiendola
versiónanterior.
4. En el paso4, simplemente cierre lainstrucciónIf.Cadavezque unainstanciade un
If…Then…Else check, Cheque Si no,debe cerrarel partidocon unfinal correspondiente End If
Cómo usarlo
Para implementarestamacro,tiene que copiarypegar enel códigode evento
Worksheet_Change ventana.Lacolocaciónde lamacro aquí permite que se ejecute cadavez
que realice algúncambioenlahoja.
1. Active el Editorde Visual BasicpresionandoALT+ F11.
2. En laventanade proyecto,encuentratuproyecto/ nombre del libroyhagaclic enel signo
más juntoa ellaenPara vertodas lashojas.
3. Haga clicen lafichade la que deseaactivarel código.
4. Seleccione el eventoChange de lalistadesplegablede eventos(verFigura2-1).
5. Escriba o pegue el códigoenel móduloreciéncreado,el cambiode ladirecciónde gama
para adaptarse a su necesita.
Figura2-1: Introduzcao pegarel códigoenla ventanade códigode evento
Worksheet_Change.
Macro 3: Guardar un librode trabajo
Antesde Cierre
59. Esta macro es unaexcelentemanerade protegeralosusuariosde formainadvertidacerrarsu
archivoantesde guardar. ¿Cuándoimplementado,estamacrogarantizaque Excel guarda
automáticamente antesde cerrarel libro.
Excel normalmente adviertealosusuariosque estántratandode cerrar un libroque no son
salvos,dandoenuna opciónpara guardarantesde cerrar. Sinembargo,muchosusuarios
puedensoplarel pasadoadvertenciaysindarse cuenta,haga clicen No,diciendoExcel para
cerrar singuardar. con este macro,estánprotegiendocontraestaguardando
automáticamente antesdel cierre.
Cómo funciona
Este códigose activapor eventosBeforeClose del libro.Cuandointentacerrarel libro,este
eventose desencadena,que ejecutael códigodentro.El quiddel códigoessimple - se le
preguntaal usuariosi realmente quierecerrarel libro(verFigura2-2).La macro luegoevalúasi
el usuariose hace clicenAceptar o Cancelar.
Figura2-2: Un cuadro de mensaje se activacuandose intentacerrarel libro.
La evaluaciónse hace conuna instrucciónSelectCase.LainstrucciónSelectCase esuna
alternativaala instrucciónIf ...Then...Else,que le permite realizarcomprobacionesde estado
ensus macros. La construcciónbásicade una instrucciónSelectCase essimple.
Select Case <some expression to check>
Case Is = <some value>
<do something>
Case Is=<some other value>
<do something else>
Case Is=<some 3rd value>
<do some 3rd thing>
End Select
Con unainstrucciónSelectCase,puede realizarmuchasverificacionescondicionales.Eneste
caso, estamossimplemente lacomprobaciónde AceptaroCancelar. Echaun vistazoal código.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘Step 1: Activatethe message box and start thecheck
Select Case MsgBox(“Save and close?”, vbOKCancel)
‘Step 2: Cancel button pressed, cancel the close
Case Is = vbCancel
Cancel = True
‘Step 3: OK button pressed, save the workbook and close
Case Is = vbOK
ActiveWorkbook.Save
‘Step 4: Close your Select Case statement
End Select
End Sub
En el Paso 1, activamosel cuadrode mensaje comoel cheque condiciónparalainstrucción
SelectCase.
Aquí,utilizamosel argumentovbOKCancelparaasegurarque el botonesAceptaryCancelarse
presentancomoopciones.
60. 2. Si el usuariohace clic enCancelarenel cuadro de mensaje,lamacrodice Excel para cancelar
la Workbook_Close evento.Estose hace pasando True al CancelarBoole.
3. Si el usuariohace clic enAceptarenel cuadro de mensaje,Paso3 entraen vigor.Aquíle
decimosaExcel para guardar la librode trabajo.Y porque no nosfijamosel Cancelarbooleano
True,Excel continúacon el cierre.
4. En el paso4, simplemente cierre lainstrucciónSelectCase.Cadavezque unainstancia de un
Seleccione el asunto,debe cerrarloconuncorrespondiente EndSelect.
Cómo usarlo
Para implementarestamacro,tiene que copiarypegar enel eventoWorkbook_BeforeClose
ventanade código.La colocaciónde la macro no permite que se ejecutecadavez que se
intentacerrarel libro.
1. Active el Editorde Visual BasicpresionandoALT+ F11 enel teclado.
2. En laventanade proyecto,encuentratuproyecto/ nombre del libroyhagaclic enel signo
más juntoa ellaen Para vertodas lashojas.
3. Haga clicen ThisWorkbook.
4. Seleccione el eventoBeforeClose enlalistadesplegable de eventos(verFigura2-3).
5. Escriba o pegue el códigoenel móduloreciéncreado.
Figura2-3: Escribao pegue el códigoenlaventanade códigode evento
Workbook_BeforeClose.
Macro 4: Proteger una hoja de cálculo el Libro de Trabajo Cerrar
A vecesesnecesarioenviarel libroporel mundoconla protecciónde lashojasde trabajo
específicas.
Si ustedencuentraque ustedestáconstantemente protegerydesprotegerlashojasantesde
distribuirloslibros,estamacropuede ayudar.
61. Cómo funciona
Este códigose activapor eventosBeforeClose del libro.Cuandointentacerrarel libro,este
eventose desencadena,que ejecutael códigodentro.Lamacroprotege automáticamente la
hojaespecificadaconlacontraseñadada,y luegoguardael libro.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘Step 1: Protect thesheet with a password
Sheets(“Sheet1”).Protect Password:=”RED”
‘Step 2: Save the workbook
ActiveWorkbook.Save
End Sub
1. En el paso1, estamosespecificandode formaexplícitaque lahojaque queremosproteger -
Hoja1, eneste caso.
Tambiénestamosproporcionandoel argumentode lacontraseña,lacontraseña:=ROJO. Esto
define lacontraseñanecesariopara quitarla protección.
Este argumentode la contraseñaescompletamenteopcional.Si omite este conjunto,lahoja
será todavíaser protegidos,peroustednonecesitaráunacontraseñaparadesprotegerla
misma.Además,tengaencuentaque lascontraseñasde Excel entre mayúsculasyminúsculas,
por loque querrá prestaratencióna lacontraseñaexactay capitalizaciónque estáutilizando.
2. Paso 2 le dice a Excel para guardar el libro.Si nosalvamosel libro,laprotecciónde lahoja
simplementeaplicamosno estaráenefectolapróximavezque se abre el libro.
Cómo usarlo
Para implementarestamacro,tiene que copiarypegar enel eventoWorkbook_BeforeClose
ventanade código.La colocaciónde la macro aquí permite que se ejecute cadavezque se
intentacerrarel libro.
1. Active el Editorde Visual BasicpresionandoALT+ F11.
2. En laventanade proyecto,encuentratuproyecto/ nombre del libroyhagaclic enel signo
más juntoa ellaenPara vertodas lashojas.
3. Haga clicen ThisWorkbook.
4. Seleccione el eventoBeforeClose enlalistadesplegable de eventos(verFigura2-4).
5. Escriba o pegue el códigoenel módulode nuevacreación,lamodificacióndel nombre de la
hoja(si es necesario) ylacontraseña.Tengaencuentaque ustedpuede protegerhojas
adicionalesmediantelaadiciónde declaracionesadicionalesantesde lainstrucción
ActiveWorkbook.Save.
Figura 2-4:Escriba o pegue el códigoenla ventana de código de eventoWorkbook_BeforeClose.
62. Macro 5: desproteger una hoja de trabajo el libro de trabajo abierto
Si ustedha distribuido libros con láminas protegidas, es probable que obtenga los libros de vuelta con el hojas
todavía protegidos. A menudo, es necesariodesproteger lashojas de unlibroantes de continuar tu trabajo. Si usted
encuentra que desea desproteger continuamente hojas de trabajo, esta macro puede ser justo La entrada.
Cómo funciona
Este código se activa por eventoOpendel libro. Al abrir un libro de trabajo, este evento se dispara, ejecuta el código
dentro. Esta macro desprotege automáticamente la hoja especificada conel dadocontraseña cuandose abre el
libro.
Private Sub Workbook_Open()
‘Step 1: Protect thesheet with a password
Sheets(“Sheet1”).Unprotect Password:=”RED”
End Sub
La macro explícitamente los nombres de la hoja que queremos desproteger - Hoja1, en este caso. Entonces se pasa
el requiere contraseña para desproteger la hoja. Tenga en cuenta que las contraseñas de Excel entre mayúsculas y
minúsculas, así que presta atencióna la contraseña exacta ycapitalización que está utilizando.
Cómo usarlo
Para implementar esta macro, tiene que copiar ypegar en el códigode eventoWorkbook_Open ventana. La
colocación de la macro aquípermite que se ejecute cada vez que el libro se abre.
1. Active el Editor de VisualBasic presionandoALT + F11.
2. En la ventana de proyecto, encuentra tu proyecto / nombre dellibroyhaga clic enel signomás juntoa ella en
Para ver todas las hojas.
3. Haga clic enThisWorkbook.
4. Seleccione el evento Openenla lista desplegable de eventos (ver Figura 2-5).
5. Escriba o pegue el códigoenel módulo de nueva creación, la modificacióndel nombre de la hoja (si es necesario)
y la contraseña. Observe que puede desproteger hojas adicionales agregando adicional declaraciones.
Figura 2-5:Escriba o pegue el códigoenla ventana de código de eventoWorkbook_Open.
Macro 6: Abrir un libro de trabajo a una ficha específica
En algunas situaciones, es imperativo que se iniciael libro enuna hoja de cálculo específica. coneste macro, si un
usuarioestá trabajando conel libro, nopuedenir por mal camino, porque el librose inicia en la hoja de cálculo
exacto que necesita.
Cómo funciona