Si quieres ejecutar ciertas acciones automáticamente al momento de abrir Excel, es posible grabar o escribir una macro que sea ejecutada en el momento de abrir un libro. En esta ocasión te mostraré dos alternativas para ejecutar una macro al abrir Excel, uno de los métodos es ideal para aquellos que apenas comienzan con la programación de macros y el otro método para aquellos usuarios que son un poco más experimentados.
El primer método que mostraré hará uso de la grabadora de macros. Y como probablemente lo sabes, una vez que activamos la grabación, todas las acciones realizadas en la interfaz de Excel serán grabadas hasta el momento en que detengamos dicha grabación. El truco para nuestro primer ejemplo radica en el momento en que guardamos la macro.
La subrutina Auto_Open en Excel
Para beneficio de todos los lectores, en especial para aquellos que no tienen experiencia con macros, haremos este ejercicio paso a paso. Para comenzar con la grabación de una macro debes pulsar el botón Grabar que se encuentra en el extremo inferior izquierdo de la barra de estado de Excel:
Esto abrirá el cuadro de diálogo Grabar macro, donde tendremos que nombrar forzosamente la macro como Auto_Open.
El nombre de la macro deberá ser Auto_Open porque esa es la manera en que Excel sabrá que existe código que deberá ejecutar al abrirse. Si no colocas este nombre a la macro, entonces no sucederá nada al abrir el libro de Excel. Para comenzar la grabación de la macro deberás hacer clic en el botón Aceptar.
Para este primer ejemplo nuestro objetivo será colocar en la celda B1 la fecha y hora actual de manera que al momento de abrir el libro de Excel quede registrado el momento en que se abrió el archivo. Para lograr esto realizaré las siguientes acciones (recuerda que estoy grabando la macro):
- Seleccionar la celda B1
- En la barra de fórmulas insertar la fórmula =AHORA() y pulsar Entrar.
- Seleccionar la celda B1 y copiar su contenido (CTRL+C).
- Hacer clic derecho sobre la celda B1 y seleccionar Opciones de pegado > Valores.
- Pulsar la tecla Esc.
- Pulsar el botón Detener.
El botón Detener lo encontrarás en la barra de estado, en el mismo lugar donde inicialmente se encontraba el botón Grabar. Con esto habremos terminado de grabar la macro y tendrás un resultado como el siguiente:
La macro que acabamos de grabar hace lo siguiente: Primero inserta la función AHORA en la celda B1 para obtener la fecha y hora actuales. En seguida copia el valor de la celda B1 y lo vuelve a pegar sobre sí misma como un valor, de esta manera la celda ya no tendrá una fórmula sino un valor de fecha y hora que permanecerá estático mientras trabajamos con el libro.
Finalmente debemos guardar el libro asegurándonos de guardarlo como un Libro de Excel habilitado para macros. La próxima vez que abras este libro, el valor de la celda B2 se actualizará automáticamente con la fecha y hora actuales. Es así como podrás ejecutar una macro al abrir Excel utilizando la subrutina Auto_Open.
Observaciones del primer método
Una vez que has creado la macro llamada Auto_Open podrás ver su código VBA desde la ficha Vista > Macros y dentro del cuadro de diálogo Macro deberás seleccionarla y pulsar el botón Modificar.
Esto abrirá el Editor de Visual Basic y podrás modificar el código de la subrutina si así lo deseas, aunque si eres un usuario principiante esto te parecerá un tanto intimidante, pero aun así te recomiendo revisar el código de la macro recién creada ya que es un buen método para aprender más sobre programación en VBA.
Si quieres sobrescribir la subrutina Auto_Open sin editar el código VBA, puedes hacerlo con la Grabadora de macros. Lo único que debes hacer es volver a grabar la macro y colocar de nueva cuenta el nombre Auto_Open y Excel enviará una notificación para saber si deseas sobrescribirla.
El evento Workbook_Open en Excel
Con el método anterior estaremos siempre obligados a tener una subrutina llamada Auto_Open pero si eres un usuario más experimentado y deseas un poco más de control para ejecutar una macro al abrir Excel te interesará el segundo método que describiré a continuación.
Comenzaremos por abrir el Editor de Visual Basic desde la ficha Programador o con el atajo de teclado ALT+F11 . Posteriormente vamos al menú Insertar > Módulo para crear un nuevo módulo de código donde colocaremos la subrutina que se ejecutará al abrir Excel. Para nuestro ejemplo utilizaré el siguiente código:
Sub Iniciar() MsgBox "Bienvenido a Excel" End Sub
El nombre de la subrutina no es relevante y para el ejemplo la he nombrado como Iniciar pero podrás utilizar cualquier nombre. Dentro de esta subrutina puedo colocar cualquier código VBA que deseo que se ejecute al abrirse Excel, pero por simplicidad del ejemplo solamente abriré un cuadro de diálogo con un mensaje de bienvenida. En este momento deberás tener una vista del Editor de Visual Basic como la siguiente:
El siguiente paso es hacer clic sobre el objeto ThisWorkbook que se encuentra enlistado en el panel izquierdo y posteriormente debemos seleccionar de las listas desplegables las opciones Workbook y Open tal como se muestra en la siguiente imagen:
Dentro del evento Workbook_Open deberás colocar el nombre de la subrutina previamente creada. Cada vez que un libro de Excel es abierto, se revisa automáticamente el evento Workbook_Open y se ejecuta cualquier código especificado dentro del mismo. Lo único que resta es guardar el código y el libro del ejemplo. Para probar nuestro código deberás cerrar el libro y volver a abrirlo para entonces confirmar que se mostrará el mensaje previamente programado.
Ejecutar una macro al abrir Excel
Con los dos ejemplos anteriores tendrás herramientas suficientes para poder ejecutar una macro al abrir Excel. Ya sea que quieras utilizar la subrutina Auto_Open o que desees crear tu propia subrutina para posteriormente llamarla desde el evento Workbook_Open.
En ambos ejemplos anteriores, la macro se ejecutará el abrir específicamente el libro para el cual ha sido creada. Si quieres que una macro se ejecute al momento de abrir cualquier libro de Excel en tu equipo, entonces tendrás que colocar el código dentro del Libro de macros personal pero este procedimiento solamente lo recomiendo para aquellos que tienen amplia experiencia en el tema ya que estarán modificando el comportamiento de Excel para todos los libros.
Un último ejemplo
En el archivo que podrás descargar con los ejemplos anteriores he incluido un tercer libro que contiene una macro que autoincrementa el valor de una celda cada vez que se abre dicho libro.
Este tercer ejemplo hace uso del evento Workbook_Open por lo que es muy similar al segundo ejemplo que hicimos, con la única diferencia de que he editado el código de la subrutina Iniciar de la siguiente manera:
Sub Iniciar() Worksheets("Hoja1").Range("B1").Value = _ Worksheets("Hoja1").Range("B1").Value + 1 ThisWorkbook.Save End Sub
El código se encarga de guardar el libro después de incrementar el valor de la celda. Tal vez una mejora a dicho ejemplo sería proteger la celda de manera que nadie pueda modificar su valor y por lo tanto siempre conocer las veces que ha sido abierto el libro, pero eso lo dejo a tu criterio e imaginación.
Solo resta descargar el archivo comprimido que contiene todos los ejemplos mostrados en este artículo y que comiences a crear macros que se ejecuten al abrir un libro de Excel.