01 MacrosVBAExcelAvanzado_EAA de 11
-
Upload
enrique-alfaro-asmad -
Category
Documents
-
view
213 -
download
0
Transcript of 01 MacrosVBAExcelAvanzado_EAA de 11
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
1/31
Macros en Excel con VBAIng. Enrique Alfaro
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
2/31
Por qu usar VBA en Excel 2010?
Microsoft Excel 2010 es una herramienta muy eficazque se puede usar para manipular, analizar ypresentar datos. A veces, no obstante, a pesar delamplio conjunto de caractersticas que ofrece la
interfaz de usuario (UI) estndar de Excel, es posibleque se desee encontrar una manera ms fcil derealizar una tarea repetitiva y comn, o de realizaralguna tarea no incluida en la interfaz de usuario.
Afortunadamente, las aplicaciones de Office, comoExcel, tienen Visual Basic para Aplicaciones (VBA),un lenguaje de programacin que brinda laposibilidad de ampliar dichas aplicaciones.
29/03/2011Ing. Enrique Alfaro
2
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
3/31
Por qu usar VBA en Excel 2010?
VBA funciona mediante la ejecucin de macros ,procedimientos paso a paso escritos en Visual Basic.Aprender a programar podra parecer intimidante,pero con algo de paciencia y algunos ejemplos, como
los que se incluyen en este curso, muchos usuariosencuentran que conocer aunque sea una pequeaparte del cdigo de VBA facilita su trabajo y lesbrinda la posibilidad de ejecutar tareas en Office que
antes crean imposibles de realizar. Si se adquierenalgunos conocimientos sobre VBA, resultar muchoms sencillo seguir aprendiendo, y las posibilidadesde que hacer son ilimitadas.
29/03/2011Ing. Enrique Alfaro
3
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
4/31
Por qu usar VBA en Excel 2010?
Sin duda, la razn ms frecuente por la cul se usaVBA en Excel es para automatizar tareas repetitivas.Por ejemplo, suponga que tiene docenas de libroscon docenas de hojas de clculo y necesita realizarcambios en cada uno de ellos. Los cambios podranser tan simples como aplicar formato nuevo a algnrango fijo de celdas, o bien tan complejos comobuscar algunas caractersticas estadsticas de losdatos en cada hoja, elegir el mejor tipo de grficopara mostrar datos con esas caractersticas y, acontinuacin, crear y dar formato al grfico enconsecuencia.
29/03/2011Ing. Enrique Alfaro
4
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
5/31
Por qu usar VBA en Excel 2010?
VBA no es til solo para tareas repetitivas. Tambinpuede usar VBA para crear nuevas funcionalidadesen Excel (por ejemplo, puede desarrollar nuevosalgoritmos para analizar datos y, a continuacin,usar las funcionalidades de grficos de Excel paramostrar los resultados) y realizar tareas que integrenExcel con otras aplicaciones de Office, comoMicrosoft Access 2010. De hecho, de todas lasaplicaciones de Office, Excel es la ms usada como
algo similar a una plataforma de desarrollo general.Adems de todas las tareas obvias que implican listasy contabilidad, los programadores usan Excel en unaamplia variedad de tareas, desde visualizacin de
datos hasta prototipos de software.
29/03/2011Ing. Enrique Alfaro
5
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
6/31
Uso de cdigo para hacer que las
aplicaciones realicen las tareasQuiz crea que escribir cdigo es algo misterioso o
complicado, pero sus principios bsicos usan lalgica diaria y son bastante accesibles. Lasaplicaciones de Office 2010 estn creadas de talmodo que exponen lo que se denomina objetos. Estosobjetos reciben instrucciones. Para interactuar conlas aplicaciones, se envan instrucciones a variosobjetos de la aplicacin. Los objetos, si bien sonvariados y flexibles, tienen sus lmites. Solo puedenhacer aquello para lo que fueron diseados y soloharn lo que se les indique que hagan.
29/03/2011Ing. Enrique Alfaro
6
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
7/31
Objetos
Los objetos de programacin se relacionanentre s sistemticamente en una jerarquadenominada modelo de objetos de la
aplicacin. El modelo de objetos bsicamenterefleja lo que se ve en la interfaz de usuario.Por ejemplo, el modelo de objetos de Excelcontiene los objetos Application,Workbook, Sheet yChart, entre muchosotros. El modelo de objetos constituye el mapaconceptual de la aplicacin y sus
funcionalidades.
29/03/2011Ing. Enrique Alfaro
7
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
8/31
Propiedades y mtodos
Es posible manipular objetos al establecersus Propiedades y llamar a sus mtodos. Sise establece una propiedad, se producen
algunos cambios en la calidad del objeto. Sise llama a un mtodo, se logra que el objetorealice una determinada accin. Por
ejemplo, el objeto Workbooktiene unmtodo Close que cierra el libro y unapropiedad ActiveSheet que representa la
hoja activa del libro.
29/03/2011Ing. Enrique Alfaro
8
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
9/31
Colecciones
Varios objetos vienen en las versionessingular y plural; por ejemplo, libro y libros,hoja de clculo y hojas de clculo. Las
versiones en plural se denominancolecciones. Los objetos de una coleccinse usan para realizar una accin en varios
elementos de esa coleccin. Ms adelante, eneste artculo, se explicar cmo usar lacoleccin Worksheets para cambiar elnombre de cada hoja de clculo de un libro.
29/03/2011Ing. Enrique Alfaro
9
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
10/31
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
11/31
Ficha Programador
Todas las aplicaciones de Office 2010 usan la cinta deopciones. La ficha Programador es una de las fichas
incluidas en la cinta de opciones, donde se puede tener accesoal Editor de Visual Basic y a otras herramientas deprogramador. Debido a que Office 2010 no muestra la fichaProgramador de manera predeterminada, debe habilitarla
mediante el siguiente procedimiento:1. Ficha Archivo
2. Opciones
3. Personalizar cinta de opciones
4. Activar la casilla Programador y
29/03/2011Ing. Enrique Alfaro
11
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
12/31
Problemas de seguridad
Haga clic en el botn de Seguridad de macros paraespecificar qu macros pueden ejecutarse y en qucondiciones. Aunque el cdigo de macros de sistemas noconfiables puede daar gravemente el equipo, las condicionesde seguridad que impiden ejecutar macros tiles pueden
disminuir en gran medida la productividad. Si la barraAdvertencia de seguridad: las macros se handeshabilitado aparece entre la cinta de opciones y el libro,cuando abre un libro que contiene una macro, puede hacer
clic en el botn Habilitar contenido para habilitar lasmacros.
Adems, como medida de seguridad, no puede guardar unamacro en el formato de archivo predeterminado de Excel(.xlsx); debe guardar la macro en un archivo con extensin
especial (.xlsm).
29/03/2011Ing. Enrique Alfaro
12
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
13/31
Problemas de Seguridad
29/03/2011Ing. Enrique Alfaro
13
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
14/31
mi primera Macro
Editor de Visual Basic Alt+F11 Barra de Herramientas: Visual
Basic Herramientas, Macro, Editor
de V.B.
InsertarMdulo
Sub Bienvenido1()
msgBox Hola a todos"
End Sub
Sub Bienvenido2()
ActiveCell.Value = Hola a todos"
End Sub
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
15/31
Uso de la grabadora de macros
A veces una simple macro grabada es todo lo que senecesita; en estos casos, incluso, no es necesario mirar elcdigo. Por lo general, la grabacin por s sola no essuficiente, pero s, un punto de inicio en el procesoautomatizado para la solucin de su problema.
Para usar la grabadora de macros como punto deinicio de la solucin1. Grabe las acciones que desea codificar.2. Revise el cdigo y busque las lneas que realizan esas
acciones.3. Elimine el resto del cdigo.4. Modifique el cdigo grabado.5. Agregue variables, estructuras de control y otro cdigo
que la grabadora de macros no pueda grabar.
29/03/2011Ing. Enrique Alfaro
15
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
16/31
OBJETO RANGE, SELECCIN CELDAS
SELECCIONAR UNA CELDARange(B5).select
SELECCIONAR VARIAS CELDAS
Range(B7:C20).select
SELECCIONAR CELDAS CONTIGUAS DE UNALISTA(De izquierda a derecha y hacia abajo)Range(Selection, Selection.End(xlToRight)).SelectRange(Selection, Selection.End(xlDown)).Select(De abajo hacia arriba y a la izquierda)Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlToLeft)).Select
29/03/2011Ing. Enrique Alfaro
16
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
17/31
OBJETO RANGE, SELECCIN CELDAS
IR AL FINAL DE CELDAS SELECCIONADAS ODETENERSE EN UNA CELDA CON DATOS
Selection.End(xlDown).Select
IR A UNA CELDA DEBAJO DE LA ACTIVA
ActiveCell.Offset(1, 0). Select
ESCRIBIR EN UNA CELDA Range(A5").Value = "SENATI pni"
29/03/2011Ing. Enrique Alfaro
17
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
18/31
OBJETO RANGE, SELECCIN CELDAS
ESCRIBIR EN UNA CELDA A UNA DISTANCIARELATIVA A LA CELDA ACTIVA
Range(A5").Select
ActiveCell.Range(A1").Value = "Trujillo"
ActiveCell.Range(B2").Value = "La Libertad"
29/03/2011Ing. Enrique Alfaro
18
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
19/31
OBJETO RANGE, SELECCIN CELDAS
ESCRIBIR EL MISMO DATO EN UN RANGODE CELDAS
Range("A1:B10").Value="Per"
ESCRIBIR EN LA CELDA TRES ABAJO Y UNAA LA DERECHA DE LA CELDA ACTIVA
ActiveCell.Cells(4,2).Value="Excel"
recuerde que lo anteriores lo mismo que:ActiveCell.Range("B4").Value = "Excel"
y lo mismo que:
ActiveCell.Offset(3, 1).Value = "Excel"
29/03/2011Ing. Enrique Alfaro
19
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
20/31
OBJETO RANGE, SELECCIN CELDAS
ESCRIBIR UN DATO EN UNA CELDAABSOLUTA UTILIZANDO CELLS(N)
Cells(32769).Value = "Fcil"
Nota: CELLS Cuenta desde la celda A1 como 1, B1 como 2, C1 como 3 .XFD1 como 16384. Es decir de izquierda a derecha a partir de la celda A1 sinimportar la celda activa.
ESCRIBIR EN UNA CELDA RELATIVA A UN
RANGO SELECCIONADORange("A1:D5").Select
Selection.Interior.Color = RGB(200, 200, 200)
Selection.Cells(6) = "123"
Cells(1).Select
29/03/2011Ing. Enrique Alfaro
20
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
21/31
29/03/2011Ing. Enrique Alfaro
21
Cells(1) Cells(2)
Cells(5) Cells(6)
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
22/31
TRATAMIENTO DE HOJAS
NOMBRAR HOJASheets(1).Name = BaseDatosSheets(2).Name = ConsolidadosSheets(3).Name = Grficos
AGREGAR HOJA(siempre se agrega antes de lahoja activa en Excel 2010)
Sheets.Add
ACTIVAR UNA HOJASheets(n).Activate o Sheets(n).SelectSheets("Peru").Select 'activa Peru si existe
29/03/2011
22Ing. Enrique Alfaro
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
23/31
TRATAMIENTO DE HOJAS
MOVER LA HOJA ACTIVA AL FINALActiveSheet.Move after:=Sheets(Sheets.Count)
Nota: Sheets.Countdevuelve un valor entero que esigual al total de hojas.
NOMBRAR LAPENULTIMA HOJA
Sheets(Sheets.Count-1).Name=etiqueta
ELIMINAR LA ULTIMA HOJA
Sheets(Sheets.Count).Delete
29/03/2011
23Ing. Enrique Alfaro
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
24/31
TRATAMIENTO DE HOJAS
29/03/2011
Pregunta Que realiza la siguiente lnea decdigo?:
MsgBox (La ultima hoja se llama" & chr(13) _&Sheets(Sheets.Count).Name)
COPIAR UNA HOJA EN EL LIBRO ACTIVO
Ejemplo: Reemplazar la Hoja1 con el nombre de la
hoja a ser copiada (Uso de After o Before)'Duplicar la hoja2 a la derecha
Sheets(2).Copy After:=Sheets(2)
Sheets(2).Name=Copia
Ing. Enrique Alfaro
24
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
25/31
TRATAMIENTO DE HOJAS
COPIA LA HOJA ACTIVA ANTES DE LA HOJA1ActiveSheet.Copy Before:=Sheets(1)
COPIA LAPRIMERA HOJA AL FINAL
Sheets(1).Copy After:=Sheets(Sheets.Count)
COPIA LAPRIMERA HOJA DE UN LIBRO
ABIERTO A OTRO LIBRO ABIERTOWorkbooks("Libro1.xlsm").Sheets(1).Copy _
After:=Workbooks("Libro2.xlsx").Sheets(1)
29/03/2011Ing. Enrique Alfaro
25
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
26/31
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
27/31
APLICAR BORDES A UNA LISTA COMPLETA
Ojo: Partir ubicndose en la celda superior izquierda de la lista
Sub Seleccionarlista() Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Call aplicarbordes
End Sub______________________________________________ Sub aplicarbordes() Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous Selection.Borders(xlEdgeTop).LineStyle = xlContinuous Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous Selection.Borders(xlInsideVertical).LineStyle = xlContinuous Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous 'Selection.Borders(xlDiagonalUp).LineStyle = xlNone 'Selection.Borders(xlDiagonalDown).LineStyle = xlNone ActiveCell.Offset(0, -1).Range("B1").Select
End Sub
29/03/2011Ing. Enrique Alfaro
27
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
28/31
Ejercicio propuesto
Crear una lista de 12 Celdas En la hoja 3 de un nuevo libro
La celda esquina superior izquierda es B4
La lista tendr 4 columnas
Los titulos sern: "Items","Enero","Febrero" y "Marzo"
Los ttulos tendran relleno Celeste, letras azules
Toda la lista tendr borde delgado de color Rojo.
La 1ra columna de Items tendr los datos: "Trujillo" y "Vir"
Repetir el dato "100" en las otras celdas de la lista.
29/03/2011Ing. Enrique Alfaro
28
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
29/31
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
30/31
Un posible ejemplo de solucin del ejercicio (2/2)
Sub aplicarformato()Seleccionar rango a la derecha (Ctrl+Shift+Dcha.)
Range(Selection, Selection.End(xlToRight)).Select
Seleccionar rango abajo (Ctrl+Shift+ABAJO.)
Range(Selection, Selection.End(xlDown)).SelectAplicar borde y color simple a todas las celdas seleccionadas
Selection.Borders.LineStyle = xlContinuous
Selection.Borders.Color = RGB(255, 0, 0)EndSub
29/03/2011Ing. Enrique Alfaro
30
-
8/7/2019 01 MacrosVBAExcelAvanzado_EAA de 11
31/31
Ahorrando cdigo con With End With
Sub ej2() 'a partir de la activacin de la celda superior
izquierda Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select 'Aplicar bordes a todas las celdas interior y
exterior With Selection.Borders
.LineStyle = xlDash .Weight = xlMedium .Color = RGB(255, 50, 10) EndWith
EndSub
29/03/2011Ing. Enrique Alfaro
31