Macros en Excel

Excel es un programa excelente. Y muchos de nosotros lo hemos podido comprobar. Sin embargo, no siempre sabemos aprovechar su gran potencial. Una de las herramientas más útiles del Excel, es su capacidad de trabajar con el lenguaje de programación «Visual Basic», aunque solamente con una parte. Si aprendemos a manejarlo, podremos resolver nuestros problemas de una forma más fácil y rápida. Para dominar la programación con Visual Basic tenemos que dejar fluir nuestra creatividad e inteligencia, ya que así lograremos crear soluciones para todos nuestros requerimientos.

Definición de «Macro»: Serie de instrucciones almacenadas que puede ser activada de diversas formas en una planilla Excel. A continuación ejemplificaremos una macro sencilla.

Ejemplo 1: Frecuentemente realizo en mi plantilla los siguientes pasos:

  • Selecciono el fuente (tipo de letra) con el que deseo trabajar.
  • Selecciono el tamaño de letra.
  • Selecciono el estilo de letra (en este caso remarcado, o negrita)
  • Selecciono el color de la letra.

Para evitar el repetir día a día estos pasos, los almacenaré en una macro, así cuando yo ejecute la macro, se ejecutarán estos pasos que acabo de describir. A continuación aprenderemos a generar una macro para luego ejecutarla.

  1. Nos posicionamos con el cursor en el casillero A1 y escribimos «Mi primera macro» (está claro que si no les gusta lo cursi pueden poner lo que deseen). Una vez tipeada la información, presionamos «Enter».
  2. Presionamos el botón con el símbolo de Office en la esquina superior izquierda de la pantalla.

Office

  1. Ahora seleccionamos  «Excel Options», y luego en la opción «Popular» cliqueamos en el checkbox «Show Developer tab in the Ribbon».
  2. HabilitarDeveloperTab

  3. El próximo paso una vez realizada esta habilitación es volver a la página principal del Excel y seleccionar el tab «Developer». Luego nos posicionaremos nuevamente en el casillero A1 con el cursor.
  4. Cliqueamos ahora la opción «Record Macro» para que se nos despliegue una ventana con la información que le asignaremos a nuestra macro. Primero ingresamos un nombre para ella. Segundo, ingresamos una tecla, la cual presionada junto a la tecla «Control» nos permitirán ejecutar la macro. En tercer lugar se nos pide que escojamos dónde se guardará el programa. Finalmente podemos detallar de qué se trata nuestra macro en la sección «Description».
  5. Una vez presionado el botón Ok, la macro automáticamente comienza a grabar. Por ende, cada acción que realicemos quedará registrada como un paso dentro de la macro hasta que le demos la orden de dejar de grabar. Como los pasos que quiero que grabe son los que mencioné anteriormente, haré lo siguiente: Configuraré el fuente de la letra de tipo «Arial». Luego, elijo tamaño de letra «10». A continuación habilito el estilo de letra remarcado, y finalmente, escojo el color de letra azul.
  6. Si hemos terminado de ejecutar las acciones que queremos que realice la macro, entonces volvemos al tab «Developer» y cliqueamos en «Stop Recording». Ahora nuestra primera macro está exitosamente creada.
  7. Sólo nos falta convocarla cuando lo deseemos. Para esto contamos con varias maneras. Una es presionar la tecla «Control» junto a la tecla que ingresamos cuando creamos la macro. Otra forma es posicionarnos en algún casillero y luego presionar el botón «fx» que está en la parte superior del Excel y que nos abre una ventana de diálogo en la que podemos buscar el nombre de nuestra macro (para esto debemos especificar que deseamos buscar en todas las categorías). Y una tercera manera es clickear el tab «Developer» nuevamente, y luego seleccionar «Macros» (imagen inferior) para que nos dé la lista de todos los programas que hemos creado.
  8. Macro

Aclaremos que podemos crear todas las macros que deseemos sin ningún problema.

Ahora que ya tenemos un ejemplo para guiarnos, vamos a practicar y practicar el crear macros simples. Una vez que dominemos su creación básica, podremos adentrarnos en sus aspectos avanzados.

Ejercicios:

  1. Generar una macro que se active con las teclas «Control» + «d» que escriba «12345», con fuente «Tahoma» y tamaño de letra 12.
  2. Generar una macro que se active con las teclas «Control» + «z» que permita seleccionar un archivo para abrirlo en Excel.
  3. Generar una macro que se active con las teclas «Control» + «w» que permita insertar un WordArt.

Observación: Los pasos a seguir y las imágenes expuestas corresponden a Microsoft Excel 2007. Aún así, las modificaciones entre versiones son mínimas.

Con lo que hemos visto hasta aquí, algunos podrían pensar que no es interesante este asunto de las macros, pero este es sólo el comienzo… Ahora para no tener problemas con las macros que creamos anteriormente, cerraremos la ventana de Microsoft Excel y abriremos una nueva plantilla.

El conocimiento que adquiriremos ahora, es el entendimiento del código que generan las macros.

En primer lugar crearemos una nueva macro que realice los siguientes pasos:

  • Una vez que nos posicionemos con el cursor en el casillero B1, presionamos el botón «Record Macro», con lo que nos emerge la ventana de creación de la macro. Seleccionamos una tecla para su ejecución rápida posterior y cliqueamos «OK».
  • Nos trasladamos al casillero A1 y escribimos «ABC». Ahora, luego de presionar «Enter», detenemos la grabación de la macro cliqueando el botón «Stop Recording».

Ahora Excel ha guardado los pasos que le mostramos y ha generado un código, el cual analizaremos a continuación.

Tenemos dos opciones: seleccionar el tab «Developer» y cliquear el botón «Visual Basic», o, cliquear la tecla «Alt» y a la vez la tecla de función F11. Realizando uno de estos pasos, Excel nos abre el editor de Visual Basic. Por defecto, dentro del editor de Visual Basic, deberían aparecer dos ventanas: la ventana «Project» y la ventana «Properties». En caso contrario, las activamos desde la opción «View» en la Barra de Herramientas.

ProjectWindow

PropertiesWindow

En la ventana «Project» daremos doble click en «Modules» (o podríamos presionar el signo «+» al costado) para activar la opción «Module1». Ingresamos a esta opción y veremos en una nueva ventana, el editor de Visual Basic, el código de la macro que generamos de la siguiente forma:

Sub Macro1()

‘Macro1 Macro

‘Keyboard shortcut: Ctrl+d

Range(«A1»).Select
ActiveCell.FormulaR1C1 = «ABC»
Range(«A2»).Select
End Sub

El significado de este código lo explicaremos a continuación:

  • Sub y End Sub indican el inicio y el final del entero procedimiento de nuestra macro.
  • Todo lo que aparece con comilla simple al inicio, nos señala que es un «comentario», en otras palabras, el texto escrito después de la comilla simple no se toma en cuenta a la hora de correr la macro.
  • Range(«A1»).Select indica que nuestra primera acción fue posicionarnos en el casillero A1. La instrucción «Range» nos permite movernos a otro casillero.
  • ActiveCell.FormulaR1C1 = «ABC» Estas sentencias nos indican que en el casillero en el que estamos posicionados se escribirá el texto «ABC». Todo lo que aparece entre comillas es un valor de texto.
  • Range(«A2»).Select Ahora usamos estas instrucciones para posicionarnos en el casillero A2. Esto sucede porque presionamos la tecla «Enter» después de introducir el texto.

Ejercicios:

  1. Generar una macro que escriba un texto en un casillero y que luego le acreciente el tamaño de la letra y observar los cambios en el código Visual Basic de la macro.
  2. Generar una macro que escriba un texto en un casillero y que luego lo centre y observar los cambios en el código Visual Basic de la macro.
  3. Generar una macro que escriba un texto en una casillero y que luego le cambie el estilo a este por un estilo remarcado y observar los cambios en el código Visual Basic de la macro.

Código básico más frecuentes en las macros:

  • Posicionarse en algún casillero Range(«A1»).Select
  • Escribir en un casillero ActiveCell.FormulaR1C1= «texto»
  • Estilo remarcado Selection.Font.Bold = True
  • Estilo cursivo Selection.Font.Italic = True
  • Estilo subrayado 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
  • Fuente With Selection.Font   .Name = «Arial»   End With
  • Tamaño de letra With Selection.Font   .Size = 10   End With
  • Copiar Selection.Copy
  • Pegar ActiveSheet.Paste
  • Cortar Selection.Cut
  • Insertar fila Selection.EntireRow.Insert
  • Eliminar fila Selection.EntireRow.Delete
  • Insertar columna Selection.EntireColumn.Insert
  • Eliminar columna Selection.EntireColumn.Delete
  • Abrir un archivo Excel Workbooks.Open Filename:=»C:Mis documentosExcel1.xls»

Creación y programación de formularios

La creación y programación de formularios para Excel es un tema más avanzado. Un formulario es una plantilla que recolecta información que es necesaria para alcanzar cierto objetivo. Para programar un formulario utilizaremos controles, los cuales responden a sucesos específicos.

A continuación aprenderemos a crear un formulario en Excel para luego programarlo:

  • Ingresamos al editor de Visual Basic y vamos a la opción «Insert» y luego «UserForm».
  • Ahora que se generó un formulario, podemos verlo en la ventana  «Project».
  • Si cliqueamos sobre el formulario una vez, nos deberá aparecer la ventana «Toolbox». Si esto no sucede, elija la opción «View» y luego «Toolbox».

toolbox1

  • Arrastramos hacia el formulario el control «Label». Se verá en el formulario un rectángulo que dirá «Label1». Si vamos a la ventana «Properties» en la opción «Caption» podremos cambiar estas palabras. Le pondremos «Nombre».
  • Ahora arrastraremos el control «TextBox» desde la ventana «Toolbox» hacia el formulario. Este control será un rectángulo blanco y vacío.
  • Lo siguiente es repetir los dos pasos anteriores pero con «Labels» que digan: «Dirección» y «Teléfono».

form

  • Ahora arrastraremos desde la ventana «Toolbox» el control «CommandButton» hacia el formulario. En la ventana «Properties» le cambiaremos el texto por «Insertar».
  • Nuestro próximo paso es presionar doble click en el control «Textbox1» para poder programarlo. Le insertaremos el siguiente código luego de haber borrado lo que hubiese escrito:

Private Sub TextBox1_Change()
Range(«A3»).Select
ActiveCell.FormulaR1C1 = Textbox1
End sub

  • Esto indica que debe posicionarse en el casillero A3, tome lo que haya escrito allí, y luego lo introduzca al control «TextBox1».
  • Para volver al formulario debemos hacer doble click en «UserForm1» en la ventana «Project».
  • Ahora presionamos doble click en el control «TextBox2» para programarlo y le insertamos el siguiente código luego de haber borrado lo que hubiese escrito:

Private Sub TextBox2_Change()
Range(«B3»).Select
ActiveCell.FormulaR1C1 = TextBox2
End Sub

  • Esto indica que debe posicionarse en el casillero B3, tome lo que haya escrito allí, y luego lo introduzca al control «TextBox2».
  • Una vez que hemos vuelto al formulario, presionamos doble click en el control «TextBox3» para programarlo y le insertamos el siguiente código luego de haber borrado lo que hubiese escrito:

Private Sub TextBox3_Change()
Range(«C3»).Select
ActiveCell.FormulaR1C1 = Textbox3
End Sub

  • Esto indica que debe posicionarse en el casillero C3, tome lo que haya escrito allí, y luego lo introduzca al control «TextBox3».
  • Una vez que hemos vuelto al formulario, presionamos doble click en el control «CommandButton» para programarlo y le insertamos el siguiente código luego de haber borrado lo que hubiese escrito:

Private Sub CommandButton1_Click()
Selection.EntireRow.Insert
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub

  • Ahora tenemos que presionar la opción «Run» y luego «Run Sub/UserForm» o en su defecto presionar la tecla «F5» para activar el formulario.
  • Listo! Todo lo que escribamos en el formulario quedará registrado en la planilla de Excel. Si presionamos el botón «Insertar» se insertará un nuevo renglón y se limpiarán los textbox para volver a digitar nuevos datos.

Por el momento dejaremos aquí la presentación de las macros de Excel para poder dar inicio a otros temas aún más interesantes. Espero que les haya sido útil la información y, recuerden: Cualquier duda sobre este tema, o si necesitan ayuda para resolver algún ejercicio, sólo avísenme y mientras pueda hacerlo los apoyaré.

8 Respuestas a “Macros en Excel

  1. Pingback: Macros en Excel « Eje Informático·

  2. I’m impressed, I must say. Really rarely do I encounter a blog that’s both educative and entertaining, and let me tell you, you have hit the nail on the head. Your idea is outstanding; the issue is something that not enough people are speaking intelligently about. I am very happy that I stumbled across this in my search for something relating to this.

  3. Necesito realizar un programa de mantenimiento preventivo, quiere poner la lista de equipo y al seleccionar uno de la lista este me despliege informacion como id, n/s, descripcion fechas (semanal mensual trimestral anual), y su instruccion de trabajo, Gracias por su ayuda

  4. Bastante buena la explicacion, no se mucho y me gustaria aprender mas, ¿sabe alguien si existe algun libro donde pueda estudiar y crear macros para el campo contable y financiero?

Replica a Jesus Cancelar la respuesta