Macros en Excel
Macros en Excel
Macros en Excel
Introducción
Al trabajar con un libro personalizado, es decir, que nos hemos definido con una serie de
características específicas como puedan ser el tipo de letra, el color de ciertas celdas, los formatos
de los cálculos y características similares, perdemos mucho tiempo en formatear todo el libro si
disponemos de muchas hojas.
Con las macros lo que se pretende es automatizar varias tareas y fusionarlas en una sola,
añadiendo por ejemplo un botón en nuestro libro que al pulsar sobre él realice todas esas tareas.
GRABAR UNA MACRO
La forma más fácil e intuitiva de crear macros es crearlas mediante la grabadora de macros del que
dispone Excel.
Esta grabadora de macros te permite grabar las acciones deseadas que posteriormente las traduce
a instrucciones en VBA, las cuales podemos modificar posteriormente si tenemos conocimientos
de programación.
Para grabar una macro debemos acceder a la pestaña Vista y despliega el submenú Macros y
dentro de este submenú seleccionar la opción Grabar macro... Además de esta opción en el menú
podemos encontrar las siguientes opciones:
Ver Macros... Donde accedemos a un listado de las macros creadas en ese libro.
Usar referencias relativas - Con esta opción utilizaremos referencias relativas para que las macros
se graben con acciones relativas a la celda inicial seleccionada.
Antes de realizar una Macro es muy importante hablar sobre sus seguridades.
Se puede grabar las macros desde la ficha Programador, si no está disponible, haga lo siguiente
para mostrarla:
EXCEL 2007
Haga clic en el Botón Microsoft Office y, a continuación, haga clic en
Opciones de Excel.
1
Como se visualiza:
EXCEL 2010
2
Se visualiza la pestaña Programador que contiene:
El grupo XML
El grupo Modificar
3
SEGURIDAD EN MACROS
Para establecer el nivel de seguridad de manera que estén habilitadas temporalmente todas las
macros, haga lo siguiente:
En la ficha Programador, en el grupo Código, haga clic en Seguridad de macros.
Se visualiza:
En Configuración de macros, haga clic en Habilitar todas las macros (no recomendado; puede
ejecutarse código posiblemente peligroso) y, a continuación, haga clic en Aceptar.
Nota Para ayudar a evitar que se ejecute código potencialmente peligroso, recomendamos que
vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando termine de
trabajar con las macros.
En la ficha Programador, en el grupo Código, haga clic en Grabar macro. En el cuadro Nombre de
la macro, escriba un nombre para la macro.
Nota El primer carácter del nombre de la macro debe ser una letra. Los caracteres siguientes
pueden ser letras, números o caracteres de subrayado. No se permiten espacios en un nombre de
macro, caracteres especiales ni palabras reservadas; puede utilizarse un carácter de subrayado
como separador de palabras.
4
Si utiliza un nombre de macro que también es una referencia de celda, puede aparecer un
mensaje indicando que el nombre de la macro no es válido.
Para asignar una combinación de tecla de método abreviado (método abreviado: tecla o
combinación de teclas de función, como F5 o CTRL+a, que utiliza para ejecutar un comando. Una
tecla de acceso, por lo contrario es un combinación de teclas, como ALT+f, que mueve el enfoque
a un menú, comando o control.) Con CTRL para ejecutar la macro, en el cuadro Tecla de método
abreviado, escriba cualquier letra en mayúsculas o minúsculas que desee utilizar.
Nota La tecla de método abreviado suplantará a cualquier tecla de método abreviado
predeterminada equivalente en Excel mientras esté abierto el libro que contiene la macro.
En la lista Guardar macro en, seleccione el libro en el que desea almacenar la macro.
Sugerencia: Si desea que la macro esté disponible siempre que utilice Excel, seleccione Libro de
macros personal. Cuando se selecciona Libro de macros personal, Excel crea un libro
oculto de macros personal (Personal.xlsb), si no existe todavía, y guarda la macro en
este libro. En Microsoft Windows XP, este libro se guarda en la carpeta C:\Documents
and Settings\nombre de usuario\Datos de programa\Microsoft\Excel\XLStart para
que se pueda cargar automáticamente cada vez que se inicia Excel. En Microsoft
Windows Vista, este libro se guarda en la carpeta C:\Usuarios\nombre de
usuario\Datos de programa\Microsoft\Excel\XLStart.
Si desea que se ejecute automáticamente una macro del libro de macros personal en otro libro,
también debe guardar ese libro en la carpeta XLStart, de forma que ambos libros se abran cuando
se inicie Excel.
1. Para incluir una descripción de la macro, escriba el texto que desee en el cuadro
Descripción.
5
Sugerencia: También puede hacer clic en Detener grabación en el lado izquierdo de la barra de
estado.
Practica I
Grabe una Macro que se active con Control + b y que esta macro permita abrir un archivo.
Grabe una Macro que inserte una tabla con datos. Grabe una Macro que abra un archivo
existente.
Grabe una Macro que abra un nuevo archivo. Grabe una Macro que inserte un logotipo.
Grabe una Macro que ordene alfabéticamente una lista de nombres. Grabe una Macro
que imprima un formulario.
Nota: Recuerde que se debe guardar como un archivo de MS Excel habilitado para macros, es decir
con la extensión .xlsm; caso contrario no guarda el código de las macros.
Para observar los códigos de una macro debemos seguir los pasos:
6
2. Presione el Botón Grabar Macro del grupo Código MS Excel muestra
el cuadro de Dialogo Grabar Macro:
10. Para visualizar el código generado, presione la tecla Alt + la tecla de función F11(Alt +
F11), o de un clic derecho en la hoja de cálculo:
7
11. Seleccione la opción Ver código. También puede acceder al grupo Código, al dar clic en
la opción Visual Basic
14. Del cuadro Proyecto de doble clic en Módulos o simplemente presione el signo de +
que aparece en la opción Módulos. Se activara debajo de Módulos la Opción Modulo1.
8
15. De doble clic en Modulo1. Se mostrara en el Editor de Visual Basic el código de la
macro que grabamos de la siguiente forma:
Sub Saludo()
‘saludo Macro
‘Mi primera macro
‘Autor: Alumno
‘Acceso directo: CTRL+s
Range("A1").Select
ActiveCell.FormulaR1C1 = "Hola amiguitos"
End Sub
16. Que es lo que significa esto nos preguntaremos asombrados, a continuación se da una
explicación de lo que ha hecho Excel:
• Sub y End Sub indican el inicio y el final del procedimiento de la macro Saludo
• Todo lo que aparece con un apóstrofe ´ indica que no se tomara en cuenta que es
solo texto o comentarios y ese texto aparece en color verde.
• Range("A1").Select Indica que lo primero que hicimos al grabar la macro fue
trasladarnos a la celda A1. La orden Range nos permite trasladarnos a una celda.
• ActiveCell.FormulaR1C1 = "Hola amiguitos" Esto indica que se escribirá en la celda
en que se encuentra el valor de texto Hola amiguitos. Todo lo que aparece entre
comillas siempre será un valor de texto. La orden ActiveCell.FormulaR1C1 nos permite
escribir un valor en la celda activa. Para comprender alteraremos el código dentro del
editor de Visual Basic.
Sub Saludo()
‘saludo Macro
‘Mi primera macro
‘Autor: Alumno
‘Acceso directo: CTRL+s
Range("A1").Select
ActiveCell.FormulaR1C1 = "Hola amiguitos"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Bienvenidos al curso de Excel"
End Sub
9
17. Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s, hará lo
siguiente:
Se visualiza:
Sub saludos()
'saludo Macro
'Mi primera macro
'Autor: Alumno
'Acceso directo: CTRL+s '
Range("A1").Select ActiveCell.FormulaR1C1 = "Hola amiguitos"
'
Range("B1").Select
ActiveCell.FormulaR1C1 = "Bienvenidos al seminario de Excel"
'
End
End Sub
Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará:
En A1 escribirá Hola amiguitos.
En B1 escribirá Bienvenidos al seminario de Excel.
Para salir del editor de clic en el Menú Archivo y elija la opción Cerrar y volver a Microsoft
Excel.
10
Si no desea salir por completo de clic en el botón Microsoft Excel que se encuentra activado
en:
Practica II
Genere una Macro que escriba un nombre en una celda y lo ponga negrita y
observe el Código.
Genere una Macro que escriba un nombre en una celda y lo Centre y observe el
Código.
Genere una Macro que escriba un nombre en una celda y cambie el tamaño de la
letra a 20 puntos y observa el Código.
11
CÓDIGOS MÁS COMUNES
Trasladarse a una Celda
Range("A1").Select
Escribir en una Celda
Activecell.FormulaR1C1="Paty Acosta"
Letra Negrita
Selection.Font.Bold = True
Letra Cursiva
Selection.Font.Italic = True
Letra Subrayada
Selection.Font.Underline = xlUnderlineStyleSingle
Centrar Texto
With Selection.HorizontalAlignment = xlCenter End With
Alinear a la izquierda
With Selection.HorizontalAlignment = xlLeft End With
Alinear a la Derecha
With Selection.HorizontalAlignment = xlRight
End With
Tipo de Letra (Fuente)
With Selection .Font.Name = "AGaramond" End With
Tamaño de Letra (Tamaño de Fuente)
With Selection.Font.Size = 15 End With
Copiar
Selection.Copy
Pegar
ActiveSheet.Paste
Cortar
Selection.Cut
12
Ordenar Ascendente
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Orden Descendente
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Buscar
Cells.Find(What:="Curso", After:=ActiveCell, LookIn:=xlFormulas, LookAt
_:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
Insertar Fila
Selection.EntireRow.Insert
Eliminar Fila
Selection.EntireRow.Delete
Insertar Columna
Selection.EntireColumn.Insert
Eliminar Columna
Selection.EntireColumn.Delete
Abrir un Libro
Workbooks.Open Filename:="C:\Mis documentos\miarchivo.xlsx"
Grabar un Libro
ActiveWorkbook.SaveAs Filename:="C:\Mis documentos\practico2.xlsx",
FileFormat _:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _ False, CreateBackup:=False
13
ALGUNAS APLICACIONES ESPECIALES
Sub BuscarUltimaFila()
End Sub
Cells(Rows.Count,1) = Al usar Rows.Count estamos contando todas las filas disponibles en Excel
cuyo valor seria 1048576. Como lo usamos en un Cells, estaremos
seleccionando la fila 1048576. El “1” indica la columna en la cual se está
trabajando (“A”).
End(xlUp) = Estamos indicando que desde la fila indicada (1048576), “suba” hasta
que encuentre un valor.
Sub BuscarUltimaFila()
Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox countult
Cells(Rows.Count, 1).End(xlUp).Select
End Sub
14
ÚLTIMA FILA VACÍA
Alternativamente, si queremos buscar la última fila vacía, haremos uso del Offset:
Sub BuscarUltimaFila()
Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Row
MsgBox countult
Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Select
End Sub
Con Offset(1,0), al encontrar la última fila en uso, saltamos 1 fila más la que sería la última fila
vacía.
Función Offset
La función offset sirve para poder moverse a través de la hoja de cálculo, tal como si lo hiciéramos
con las flechas del teclado (arriba, abajo, izquierda, derecha).
Ejemplos:
Con esta función igualmente podemos poner valores a la celda activa seleccionada. Por ejemplo, la
siguiente macros:
Sub utilidad_del_offset()
Dim TITULO As Range
Set TITULO = Range(“A1”)
TITULO.Offset(1, 0).Value = “Utilidad del Offset”
End Sub
Los resultados serán que el título “Utilidad del Offset” será colocado 1 fila debajo de la celda A1:
15
Otra opción de código es para ir a la primera fila en blanco al final de una tabla completa de datos.
La sentencia sería (considerando que estamos dentro de la tabla):
Sub fin_inferior_de_la_tabla()
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End Sub
Sub fin_der_de_la_tabla()
Selection.End(xlToRight).Select
Selection.Offset(0,1).Select
End Sub
16
Tipos de datos Tamaño de Intervalo
almacenamiento
17