{"id":16441,"date":"2021-08-13T23:21:39","date_gmt":"2021-08-14T04:21:39","guid":{"rendered":"https:\/\/www.perucontable.com\/excelcontable\/?p=16441"},"modified":"2023-11-14T20:19:34","modified_gmt":"2023-11-15T01:19:34","slug":"como-ejecutar-una-macro-al-abrir-excel","status":"publish","type":"post","link":"https:\/\/www.perucontable.com\/excelcontable\/como-ejecutar-una-macro-al-abrir-excel\/","title":{"rendered":"\u00bfC\u00d3MO EJECUTAR UNA MACRO AL ABRIR EXCEL?"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-81.png\" alt=\"\" class=\"wp-image-16446\" width=\"469\" height=\"235\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-81.png 317w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-81-300x150.png 300w\" sizes=\"(max-width: 469px) 100vw, 469px\" \/><\/figure><\/div>\n\n\n<p>Si quieres ejecutar ciertas acciones autom\u00e1ticamente 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\u00f3n te mostrar\u00e9 dos alternativas para&nbsp;<strong>ejecutar una macro al abrir Excel<\/strong>, uno de los m\u00e9todos es ideal para aquellos que apenas comienzan con la programaci\u00f3n de macros y el otro m\u00e9todo para aquellos usuarios que son un poco m\u00e1s experimentados.<\/p>\n\n\n\n<p>El primer m\u00e9todo que mostrar\u00e9 har\u00e1 uso de la&nbsp;grabadora de macros. Y como probablemente lo sabes, una vez que activamos la grabaci\u00f3n, todas las acciones realizadas en la interfaz de Excel ser\u00e1n grabadas hasta el momento en que detengamos dicha grabaci\u00f3n. El truco para nuestro primer ejemplo radica en el momento en que guardamos la macro.<\/p>\n\n\n\n<h2><strong>LA SUBRUTINA AUTO_OPEN EN EXCEL<\/strong><\/h2>\n\n\n\n<p>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\u00f3n de una macro debes pulsar el bot\u00f3n&nbsp;<em>Grabar<\/em>&nbsp;que se encuentra en el extremo inferior izquierdo de la barra de estado de Excel:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"338\" height=\"206\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-82.png\" alt=\"\" class=\"wp-image-16447\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-82.png 338w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-82-300x183.png 300w\" sizes=\"(max-width: 338px) 100vw, 338px\" \/><\/figure><\/div>\n\n\n<p>Esto abrir\u00e1 el cuadro de di\u00e1logo&nbsp;<em>Grabar macro<\/em>, donde tendremos que nombrar forzosamente la macro como&nbsp;<em>Auto_Open<\/em>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"381\" height=\"366\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-85.png\" alt=\"\" class=\"wp-image-16450\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-85.png 381w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-85-300x288.png 300w\" sizes=\"(max-width: 381px) 100vw, 381px\" \/><\/figure><\/div>\n\n\n<p>El nombre de la macro deber\u00e1 ser&nbsp;<em>Auto_Open<\/em>&nbsp;porque esa es la manera en que Excel sabr\u00e1 que existe c\u00f3digo que deber\u00e1 ejecutar al abrirse. Si no colocas este nombre a la macro, entonces no suceder\u00e1 nada al abrir el libro de Excel. Para comenzar la grabaci\u00f3n de la macro deber\u00e1s hacer clic en el bot\u00f3n Aceptar.<\/p>\n\n\n\n<p>Para este primer ejemplo nuestro objetivo ser\u00e1 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\u00f3 el archivo. Para lograr esto realizar\u00e9 las siguientes acciones (recuerda que estoy grabando la macro):<\/p>\n\n\n\n<ol>\n<li>Seleccionar la celda B1<\/li>\n\n\n\n<li>En la barra de f\u00f3rmulas insertar la f\u00f3rmula =AHORA() y pulsar Entrar.<\/li>\n\n\n\n<li>Seleccionar la celda B1 y copiar su contenido (CTRL+C).<\/li>\n\n\n\n<li>Hacer clic derecho sobre la celda B1 y seleccionar Opciones de pegado &gt; Valores.<\/li>\n\n\n\n<li>Pulsar la tecla Esc.<\/li>\n\n\n\n<li>Pulsar el bot\u00f3n Detener.<\/li>\n<\/ol>\n\n\n\n<p>El bot\u00f3n&nbsp;<em>Detener<\/em>&nbsp;lo encontrar\u00e1s en la barra de estado, en el mismo lugar donde inicialmente se encontraba el bot\u00f3n&nbsp;<em>Grabar<\/em>. Con esto habremos terminado de grabar la macro y tendr\u00e1s un resultado como el siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"446\" height=\"248\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-87.png\" alt=\"\" class=\"wp-image-16452\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-87.png 446w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-87-300x167.png 300w\" sizes=\"(max-width: 446px) 100vw, 446px\" \/><\/figure><\/div>\n\n\n<p>La macro que acabamos de grabar hace lo siguiente: Primero inserta la&nbsp;funci\u00f3n AHORA&nbsp;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\u00ed misma como un valor, de esta manera la celda ya no tendr\u00e1 una f\u00f3rmula sino un valor de fecha y hora que permanecer\u00e1 est\u00e1tico mientras trabajamos con el libro.<\/p>\n\n\n\n<p>Finalmente debemos guardar el libro asegur\u00e1ndonos de guardarlo como un&nbsp;<em>Libro de Excel habilitado para macros<\/em>. La pr\u00f3xima vez que abras este libro, el valor de la celda B2 se actualizar\u00e1 autom\u00e1ticamente con la fecha y hora actuales. Es as\u00ed como podr\u00e1s&nbsp;<strong>ejecutar una macro al abrir Excel<\/strong>&nbsp;utilizando la subrutina&nbsp;<em>Auto_Open<\/em>.<\/p>\n\n\n\n<h2><strong>OBSERVACIONES DEL PRIMER M\u00c9TODO<\/strong><\/h2>\n\n\n\n<p>Una vez que has creado la macro llamada&nbsp;<em>Auto_Open<\/em>&nbsp;podr\u00e1s ver su c\u00f3digo VBA desde la ficha Vista &gt; Macros y dentro del cuadro de di\u00e1logo&nbsp;<em>Macro<\/em>&nbsp;deber\u00e1s seleccionarla y pulsar el bot\u00f3n&nbsp;<em>Modificar<\/em>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"384\" height=\"366\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-88.png\" alt=\"\" class=\"wp-image-16453\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-88.png 384w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-88-300x286.png 300w\" sizes=\"(max-width: 384px) 100vw, 384px\" \/><\/figure><\/div>\n\n\n<p>Esto abrir\u00e1 el Editor de Visual Basic y podr\u00e1s modificar el c\u00f3digo de la subrutina si as\u00ed lo deseas, aunque si eres un usuario principiante esto te parecer\u00e1 un tanto intimidante, pero aun as\u00ed te recomiendo revisar el c\u00f3digo de la macro reci\u00e9n creada ya que es un buen m\u00e9todo para aprender m\u00e1s sobre programaci\u00f3n en VBA.<\/p>\n\n\n\n<p>Si quieres sobrescribir la subrutina&nbsp;<em>Auto_Open<\/em>&nbsp;sin editar el c\u00f3digo VBA, puedes hacerlo con la Grabadora de macros. Lo \u00fanico que debes hacer es volver a grabar la macro y colocar de nueva cuenta el nombre&nbsp;<em>Auto_Open<\/em>&nbsp;y Excel enviar\u00e1 una notificaci\u00f3n para saber si deseas sobrescribirla.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"449\" height=\"118\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-89.png\" alt=\"\" class=\"wp-image-16454\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-89.png 449w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-89-300x79.png 300w\" sizes=\"(max-width: 449px) 100vw, 449px\" \/><\/figure><\/div>\n\n\n<h2><strong>EL EVENTO WORKBOOK_OPEN EN EXCEL<\/strong><\/h2>\n\n\n\n<p>Con el m\u00e9todo anterior estaremos siempre obligados a tener una subrutina llamada&nbsp;<em>Auto_Open<\/em>&nbsp;pero si eres un usuario m\u00e1s experimentado y deseas un poco m\u00e1s de control para&nbsp;<strong>ejecutar una macro al abrir Excel<\/strong>&nbsp;te interesar\u00e1 el segundo m\u00e9todo que describir\u00e9 a continuaci\u00f3n.<\/p>\n\n\n\n<p>Comenzaremos por abrir el Editor de Visual Basic desde la&nbsp;ficha Programador&nbsp;o con el atajo de teclado ALT+F11 . Posteriormente vamos al men\u00fa&nbsp;<em>Insertar &gt; M\u00f3dulo<\/em>&nbsp;para crear un nuevo m\u00f3dulo de c\u00f3digo donde colocaremos la subrutina que se ejecutar\u00e1 al abrir Excel. Para nuestro ejemplo utilizar\u00e9 el siguiente c\u00f3digo:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"345\" height=\"129\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-90.png\" alt=\"\" class=\"wp-image-16455\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-90.png 345w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-90-300x112.png 300w\" sizes=\"(max-width: 345px) 100vw, 345px\" \/><\/figure><\/div>\n\n\n<p>El nombre de la subrutina no es relevante y para el ejemplo la he nombrado como&nbsp;<em>Iniciar<\/em>&nbsp;pero podr\u00e1s utilizar cualquier nombre. Dentro de esta subrutina puedo colocar cualquier c\u00f3digo VBA que deseo que se ejecute al abrirse Excel, pero por simplicidad del ejemplo solamente abrir\u00e9 un cuadro de di\u00e1logo con un mensaje de bienvenida. En este momento deber\u00e1s tener una vista del Editor de Visual Basic como la siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"683\" height=\"283\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-91.png\" alt=\"\" class=\"wp-image-16456\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-91.png 683w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-91-300x124.png 300w\" sizes=\"(max-width: 683px) 100vw, 683px\" \/><\/figure><\/div>\n\n\n<p>El siguiente paso es hacer clic sobre el objeto&nbsp;<em>ThisWorkbook<\/em>&nbsp;que se encuentra enlistado en el panel izquierdo y posteriormente debemos seleccionar de las listas desplegables las opciones&nbsp;<em>Workbook<\/em>&nbsp;y&nbsp;<em>Open<\/em>&nbsp;tal como se muestra en la siguiente imagen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"991\" height=\"255\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-92.png\" alt=\"\" class=\"wp-image-16457\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-92.png 991w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-92-300x77.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-92-768x198.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-92-696x179.png 696w\" sizes=\"(max-width: 991px) 100vw, 991px\" \/><\/figure>\n\n\n\n<p>Dentro del evento&nbsp;<em>Workbook_Open<\/em>&nbsp;deber\u00e1s colocar el nombre de la subrutina previamente creada. Cada vez que un libro de Excel es abierto, se revisa autom\u00e1ticamente el evento&nbsp;<em>Workbook_Open<\/em>&nbsp;y se ejecuta cualquier c\u00f3digo especificado dentro del mismo. Lo \u00fanico que resta es guardar el c\u00f3digo y el libro del ejemplo. Para probar nuestro c\u00f3digo deber\u00e1s cerrar el libro y volver a abrirlo para entonces confirmar que se mostrar\u00e1 el mensaje previamente programado.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"141\" height=\"136\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-93.png\" alt=\"\" class=\"wp-image-16458\"\/><\/figure><\/div>\n\n\n<h2><strong>EJECUTAR UNA MACRO AL ABRIR EXCEL<\/strong><\/h2>\n\n\n\n<p>Con los dos ejemplos anteriores tendr\u00e1s herramientas suficientes para poder&nbsp;<strong>ejecutar una macro al abrir Excel<\/strong>. Ya sea que quieras utilizar la subrutina&nbsp;<em>Auto_Open<\/em>&nbsp;o que desees crear tu propia subrutina para posteriormente llamarla desde el evento&nbsp;<em>Workbook_Open.<\/em><\/p>\n\n\n\n<p>En ambos ejemplos anteriores, la macro se ejecutar\u00e1 el abrir espec\u00edficamente 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\u00e1s que colocar el c\u00f3digo dentro del&nbsp;Libro de macros personal&nbsp;pero este procedimiento solamente lo recomiendo para aquellos que tienen amplia experiencia en el tema ya que estar\u00e1n modificando el comportamiento de Excel para todos los libros.<\/p>\n\n\n\n<h2><strong>UN \u00daLTIMO EJEMPLO<\/strong><\/h2>\n\n\n\n<p>En el archivo que podr\u00e1s 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.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"320\" height=\"150\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-94.png\" alt=\"\" class=\"wp-image-16459\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-94.png 320w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-94-300x141.png 300w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/figure><\/div>\n\n\n<p>Este tercer ejemplo hace uso del evento&nbsp;<em>Workbook_Open<\/em>&nbsp;por lo que es muy similar al segundo ejemplo que hicimos, con la \u00fanica diferencia de que he editado el c\u00f3digo de la subrutina&nbsp;<em>Iniciar<\/em>&nbsp;de la siguiente manera:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"492\" height=\"184\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-95.png\" alt=\"\" class=\"wp-image-16460\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-95.png 492w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-95-300x112.png 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/><\/figure><\/div>\n\n\n<p>El c\u00f3digo se encarga de guardar el libro despu\u00e9s de incrementar el valor de la celda. Tal vez una mejora a dicho ejemplo ser\u00eda&nbsp;proteger la celda&nbsp;de manera que nadie pueda modificar su valor y por lo tanto siempre conocer las veces que ha sido abierto el libro, pero eso se deja a criterio propio.<\/p>\n\n\n\n<p><strong>Art\u00edculo que te recomendamos leer:<\/strong><br><strong><a href=\"https:\/\/www.perucontable.com\/excelcontable\/atajo-para-combinar-celdas-en-excel\/\" data-type=\"URL\" data-id=\"https:\/\/www.perucontable.com\/excelcontable\/atajo-para-combinar-celdas-en-excel\/\">ATAJO PARA COMBINAR CELDAS EN EXCEL<\/a><\/strong><\/p>\n\n\n\n<p><strong>\u00bfQu\u00e9 te pareci\u00f3 nuestra blog? Com\u00e9ntanos.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si quieres ejecutar ciertas acciones autom\u00e1ticamente 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\u00f3n te mostrar\u00e9 dos alternativas para&nbsp;ejecutar una macro al abrir Excel, uno de los m\u00e9todos es ideal para aquellos que apenas comienzan con la programaci\u00f3n [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16462,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[108,67,25],"tags":[],"yst_prominent_words":[301,133,187],"_links":{"self":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16441"}],"collection":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/comments?post=16441"}],"version-history":[{"count":7,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16441\/revisions"}],"predecessor-version":[{"id":17453,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16441\/revisions\/17453"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media\/16462"}],"wp:attachment":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media?parent=16441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/categories?post=16441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/tags?post=16441"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/yst_prominent_words?post=16441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}