Excel

Ξ 340 comentarios

Cómo hacer una macro en Excel

por Dexter
Cómo hacer una macro en Excel

Actualmente me encuentro realizando mi tercera práctica profesional en la cual me han dado como tarea la de realizar un resumen anual de unos servicios de enlaces de internet y telefonía IP. Al ser anual estamos hablando de al menos unos 4000, si cuatro mil, datos en Excel, los cuales se deben filtrar, ordenar y hacer cálculos respectivos.

Para que este proceso no se haga tan tedioso es que he recurrido a una herramienta que muchos han escuchado pero creo estar en la razón al decir que pocos saben utilizar.

Estamos hablando de las Macros.

Una pequeña introducción

Cuando hablamos de una Macro en Excel nos referimos a un lenguaje de programación orientado a aplicaciones. En este caso particular, se utiliza VBA (Visual Basic for Applications) el cual es un lenguaje de programación desarrollado por Microsoft.  Excel, al igual que los otros programas de Microsoft Office incluyen el lenguaje VBA.

Imaginen un Robot que conoce todo sobre Excel. Este robot puede leer instrucciones y operar sobre Excel de manera rápida y precisa. Simplemente escribimos un lenguaje que este robot comprenda, para que luego el robot haga el trabajo sucio mientras nos relajamos y tomamos una limonada. Eso es justamente VBA. Un lenguaje en código para robots. Pero Ojo, Excel no viene ni con un robot ni con la limonada. =)

La combinación entre la generación de un código VBA y su posterior ejecución en Excel es lo que se llama una Macro. A fin de cuentas una Macro es un programa el cual contiene un trozo de código de manera que podemos automatizar procesos que el realizarlos a mano nos pueden tomar mucho tiempo.

La palabra Macro proviene del griego makros que significa grande-lo cual podría describir el tipo de pago que podrías recibir por convertirte en un experto en programación de Macros.

Otra cosa que se debe tener en cuenta es que VBA no es lo mismo que VB (Visual Basic), ya que VB es un lenguaje de programación que permite crear programas auto ejecutables (conocidos como archivos EXE). A pesar de que VBA y VB tienen mucho en común, son dos cosas distintas.

La idea de crear una Macro es la de automatizar tareas que son repetitivas o que deben ser desarrollas con frecuencia.  Por ejemplo, preparar reportes mensuales de manera que todos los meses podrás presentarle a tu jefe reportes con un mismo formato. Él quedará impresionado por tu consistencia  y la gran calidad de tu trabajo, e incluso te promoverá a un nuevo cargo al cual no estás capacitado!!

¡Comencemos!

Lo primero a realizar es hacer visible la lengüeta de “Programador”. Por defecto esta lengüeta viene oculta en Excel 2007. Iremos a Inicio y daremos click en “Opciones de Excel”.

La primera opción es “Más Frecuente” y dentro de ella debemos marcar la opción de “Mostrar Ficha Programador en la cinta de Opciones”. Acá podemos observar como la hemos marcado, que en este caso es la tercera opción. Con ello la lengüeta “Programador” está visible y podemos comenzar a utilizar Macros en nuestro libro de Excel.

Lo que cubriremos en este instructivo es la grabación de Macros. Esto es muy parecido a la grabación de acciones que alguna vez cubrimos en un tutorial de Photoshop.

Grabando una Macro

  • Seleccionamos una celda; cualquier celda servirá.
  • En la lengüeta de programador damos click en “grabar Macro”.

Con ello nos aparece la ventana  “Grabar Macro”.

En “Nombre de la macro” pondremos un nombre representativo (Ojo no puede llevar espacios por lo que si desean pueden usar guión bajo “_” para poner espacios entre palabras), en “método abreviado” pondremos una combinación  de teclas como acceso directo (por defecto es CTRL +”algo ”, en mi caso utilizá la tecla Shift o Mayúscula más la tecla N), en “Guardar macro en: ” dejamos igual como está, y en “Descripción” anotamos justamente una descripción de lo que hará la macro.

Damos click en “Aceptar ”. Con ello la grabación de la Macro comienza, por lo tanto todos los movimientos que realicemos dentro del libro de Excel serán grabados.

  • Anotaremos nuestro nombre en una celda
  • Hacemos click en la celda bajo el nombre y anotaremos la siguiente fórmula: =AHORA()

Esta fórmula muestra la fecha y hora actual.

  • Seleccionamos la celda que contiene la fórmula y la copiaremos (Con CTRL+C o en la lengüeta Inicio -> Copiar)

  • En la lengüeta Inicio está el botón Pegar. Si damos Click en la flecha bajo el ícono verán que aparecen más opciones. Elegimos la opción “Pegar Valores”.

Esto convierte la fórmula a su valor correspondiente.

  • Seleccionamos ambas celdas, osea la celda con la fecha y la celda con el nombre.
  • Aplicamos a ambas celdas un formato, por ejemplo “Negrita ” y en el tamaño de la letra ponemos  “16”.

  • Vamos a la lengüeta Programador y detenemos la grabación de la Macro con el botón respectivo.

¡Felicitaciones! Acabas de grabar tu primera Macro. Esta es una buena oportunidad para llamar a tu madre y contarle las buenas noticias.

Ahora solo nos falta correr la Macro y ver los resultados. Para ello iremos a una nueva hoja de cálculo. Seleccionamos la celda A1.

En la lengüeta de Programador hacemos click en Macros con lo cual se nos abre la ventana que administra las Macros.

Elegimos nuestra Macro, que en este caso es única y le damos click al botón ejecutar. También si  prefieren pueden seleccionar la celda A1 y simplemente utilizar la combinación de teclas que configuramos, en este caso Ctrl+Shift+N.

Como observarán se ha pegado la información y se le ha dado el formato de letra en negrita y tamaño 16. Con un simple click o combinación de teclas sin necesidad de anotar el nombre, aplicar una fórmula, copiarla, pegarla, seleccionar ambas celdas y darles formato.

Ahora analicemos el código o lenguaje que se ha grabado.

Para ello podemos dar click en el botón “Visual Basic” de la lengüeta Programador o utilizar la combinación de teclas ALT+F11.

Con ello se nos abre el editor de VBA.

Damos click en el símbolo “+” de “Módulos” de manera de ampliar el árbol de módulos y con ello nos aparecerá “módulo 1” tal como se observa en la fotografía.

Con ello se abre el módulo y podemos obsevar el código que se ha generado.

Los comentarios se pueden anotar anteponiendo el símbolo de apóstrofe ().

En este caso para explicar el código dejaré comentarios en cada línea.

Sub NombreyTiempo() ‘ NombreyTiempo Macro ‘ Esta Macro anota mi nombre y el tiempo ‘ Acceso directo: Ctrl+Mayús+N Range(“A1”).Select ‘Se selecciona la celda A1 ActiveCell.FormulaR1C1 = “Dexter” ‘En ella se insertará Dexter Range(“A2”).Select ‘Se selecciona la celda A2 ActiveCell.FormulaR1C1 = “=NOW()” ‘Se aplica la fórmula Ahora() que en VBA se anota por su nombre en inglés NOW() Range(“A2”).Select ‘Nuevamente seleccionamos la celda A2 Selection.Copy ‘La selección se copia Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ‘Se vuelve a pegar pero como pegado especial, en este caso como Valor Range(“A1:A2”).Select ‘Tomamos el Rango desde la celda A1 a la A2 Application.CutCopyMode = False ‘Esta linea no hace nada en particular ya que no estamos ni copiando ni pegando With Selection.Font ‘Con la seleccion antes hecha, entramos a la configuracion de fuentes .Name = “Calibri” ‘Se selecciona el tipo de fuente, en este caso Calibri .Size = 16  ‘Se selecciona el tamaño de fuente, en este caso 16 .Strikethrough = False ‘los siguientes códigos representan otros parámetros que no son necesarios analizar .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With Selection.Font.Bold = True ‘Con la misma seleccion anterior (celdas A1 y A2), aplicamos el formato de Negrita End Sub

Este código lo pueden copiar y pegar en el editor de Macros de Excel, correrlo y funcionará correctamente.

Bueno con esto me despido, espero que les haya gustado.

Y como siempre, este tutorial ha sido

Felices proyectos!!!!!

Para cualquier consulta no duden en escribirnos.

Estaremos felices de responderles y ayudarles en todo lo posible.

Cómo Lo Hago, si se puede, te lo enseñamos.

Comparte este tutorial

El culpable de todo esto

Cuenta la leyenda, que si Albert Einstein hubiese sido mujer, se hubiese encontrado con Isaac Newton y hubiesen tenido un hijo, mientras por otro lado MacGyver se hubiese encontrado con la versión femenina de una fusión entre los Cazadores de Mitos, hubiesen tenido una hija, y por afán del destino esos 2 niños se hubiesen encontrado cuando adultos y hubiesen tenido un hijo, ese sería Dexter. Simple, ¿No?. Existen otras teorías respecto a su origen, pero en verdad no quisieramos mentirles… sería una rotería. Bautizado en los barrios populares como ‘El Jackie Chan de la Electrónica’, presenta las más diversas soluciones a los problemas diarios. Es un crack.

En los barrios marginales se le conoce como: Dexter

Comentarios en Facebook

340 Comentarios

  • Buenas tardes,

    Como puedo hacer una macro con 8 celdas?

    Les agradezco su atención

  • buenos dias estoy trabajando en un proyecto y requeire crear una macro pero no se crearla muy bien es porque no entiendo las funsiones de e. si usted me puede ayudar sobre eso. yo voy a poner en practica lo que usted explico al principio para ver si solvento. gracioas

  • Cordial saludo Dexter, deseándole lo mejor y montones de Bendiciones para usted y todos los suyos, como un comentario que ley anteriormente, considero que el Excel es una herramienta de mucha importancia, el dominarla da para hacer todas las maravillas que uno quiera por lo mismo mi mas sinceras felicitaciones.
    Dexter: mi caso es el siguiente; Tengo en Excel una planilla de calificaciones con varios Items y cada uno con una ponderación diferente, al frente de cada Ítem debo escribir una observación cuando cuando el estudiante tiene alguna falencia, luego mi pregunta es: como hago para que cuando coloque la nota inferior a la establecida automáticamente me salga la observación. Segundo como se aplican los Macros para cada vez que haga una evaluación al dar guardar pueda tener una sola base de datos sin tener que hacer un pocononon de formatos individuales.
    No se si supe explicarme o si puede ayudarme le enviaría a un correo la plantilla que tengo y poder así ser mas claro en mi comentario y en mi necesidad.
    Si me puede colaborar se lo agradecería muchicimo y si e de esperar alguna respuesta por favor escribirmela a mi correo que es: josegar57@hotmail.com
    Gracias de antemano por su colaboración se despide un aprendiz con deseos de aprender mas.

  • hola dexter la verdad soy algo así como muuuuuy nueva en lo de la computación y me gustaría hacer un programa para mi negocio de muebles donde al entrar en un botón me aparezca lo que tengo en existencia en la tienda y al entrar en otro me desplegara la lista de apartados que hay en la actualidad y su fecha de vencimiento para poder avisarle a los clientes y no pierdan sus piezas ojala me puedas orientar de manera sencilla ya que en verdad no conozco los términos que se utilizan en la computación pero aprendo muy pronto gracias

  • PUES ALGO ESTOY HACIENDO MAL PORQUE NO RESPETA LO QUE QUIERO
    RESULTA QUE GRABO LA MACRO, PERO EN LUGRA DE ESCRIBIR LOS DATOS LOS COPIO DE OTRA HOJA DE EXCEL Y LOS PEGO COMO HOJA DE EXCEL XLS Y SE PEGA CON TODO Y FORMATO, OK SELECCIONO TOSO Y LO PEGO COMO VALORES, CAMBIO EL TIPO DE LETRA Y DETENGO LA GRABACION, ME VOY A OTRA HOJA PARA CORRER LA MACRO Y OH PROBLEMA HAY UN ERROR, NO CORRE LA MACRO. A VER SI ME PUEDES AYUDAR
    GRACIAS

  • Hola, es de agradecerse este esfuerzo tuyo, me ha servido muchisimo para iniciar en macros, yo lo hacia en el jurasico con lotus 1-2-3 y ahora inicio a macros en excel, pero tengo un problema mira, de la curp que usamos en mexico manejamos bloques de 100-300 curp del tipo TOCA720131846 al mismo tiempo, ya con tu enseñanza pude extraer la fecha de nacimiento de una fila, pero al correr nuevamente la macro en la fila siguiente (curp siguiente) regresa a la que inicialmente se uso y no logro hacerla que trabaje en la siguiente fila, podrias orientarme?.- por tu atencion gracias

  • osea si me entiendes we…..
    esto ser asi como muy util… no?????…..
    pero cero qe te fluya…. eeehhh……

  • Hola, no se si es aqui donde me tengo que poner en contacto, y si asi es como se hace.
    Antes de nada me disculpo por si lo estoy haciendo mal.
    Bien, mi problema es que manejo excel, pero no tengo mas idea que la que voy pillando en internet.
    Les explico lo que necesito, aunque lo mejor sería contactar, pero ahí va:
    Yo utilizo varias columnas con datos, taras, brutos y netos, así como matriculas. Los tengo todos mas o menos relacionados. Lo que necesito es hacer una macro(creo que es como se puede hacer), en donde en cuanto ponga datos en la columna C, que automaticamente me ponga la hora en la columna B, y que cada vez que pongo estos datos, no me cambien la hora de la celda anterior.
    Muchas gracias de antemano.

  • Hola Dexter,

    me encantan tus tutoriales voy poco a poco pero les entiendo muy bien….
    Te agradeceria mucho si me puderas orientar sobre como hacer una macro para poder obtener informacion de incidencias de trabajadores, tengo que sacar reportes diarios de los horarios contra el reloj checador y registrarlos en otro excel ahi mismo voy seleccionando los retardos del personal diarios y al ultimo hago el acumulado mensual, tambien por semana verifico faltas de cada empleado, incapacidades, entradas y salidas que es un poco laborioso, ya que tengo que pasarlo de esa hoja de excel a otra en donde, ya que los estan acomodados en un orden diferente y es un resumen de actividades… espero haber sido clara con la informacion y que me pudieras ayudar.

    Te agradezco de antemano.

    Slds.

  • Sabes mucho de excel, podrias hacer un tutorial sobre como hacer graficos usando macros, he visto que se pueden animar.

1 10 11 12 13 14 34

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Gente linda que nos quiere

Donde mas estamos