En Microsoft Access, las macros que se adjuntan a objetos de interfaz de usuario (UI), como botones de comando, cuadros de texto, formularios e informes, se conocen como macros de UI. Esto las distingue de las macros de datos, que se adjuntan a tablas. Las macros (UI) se usan para automatizar una serie de acciones, como abrir otro objeto, aplicar un filtro, iniciar una operación de exportación y muchas otras tareas. Este artículo le presenta el generador de macros recientemente rediseñado y le muestra las tareas básicas involucradas en la creación de una macro de interfaz de usuario.
Nota
Este artículo no se aplica a aplicaciones web de Access.
En este artículo...
- Información general
- Generador de macros
- Crear una macro independiente
- Crear una macro incrustada
- Agregar acciones a una macro
- Controle el flujo del programa con If, Else If y Else
- Crear submacros
- Agrupar acciones relacionadas
- Expandir y contraer acciones o bloques de macros
- Copiar y pegar acciones de macro
- Compartir una macro con otros usuarios
- Ejecutar una macro
- Depurar una macro
- Convertir una macro en código VBA
Información general
Las macros pueden estar contenidas en objetos de macro (a veces denominadas macros independientes) o pueden incrustarse en las propiedades de evento de formularios, informes o controles. Las macros incrustadas se convierten en parte del objeto o control en el que están incrustadas. Los objetos de macro están visibles en el panel de navegación, en Macros; las macros incrustadas no lo son.
Cada macro se compone de una o más acciones de macro. Según el contexto en el que esté trabajando, es posible que algunas acciones de macro no estén disponibles para su uso.
Generador de macros
Estas son algunas de las principales características destacadas del Generador de macros.
- Catálogo de acciones Las acciones de macro se organizan por tipo y se pueden buscar.
- IntelliSense Al escribir expresiones, IntelliSense sugiere posibles valores y le permite seleccionar el correcto.
- Métodos abreviados de teclado Use combinaciones de teclas para escribir macros de forma más rápida y fácil.
- Flujo de programa Cree macros más legibles con líneas de comentario y grupos de acciones.
- Declaraciones condicionales Permita la ejecución de lógicas más complejas con compatibilidad con if/else/else if.
- Reutilización de macros El catálogo de acciones muestra otras macros que haya creado, permitiéndole copiarlas en la que está trabajando.
- Uso compartido más fácil Copie una macro y péguela como XML en un correo electrónico, una entrada de grupo de noticias, un blog o un sitio web de ejemplo de código.
Aquí hay un video que lo guía por las áreas principales del Generador de macros.
Crear una macro independiente
Este procedimiento crea un objeto de macro independiente que aparecerá bajo Macros en el panel de navegación. Las macros independientes son útiles cuando se desea reutilizar la macro en muchos lugares de la aplicación. Al llamar a la macro desde otras macros, puede evitar duplicar el mismo código en varios lugares.
En el grupo Macros y código de la pestaña Crear, haga clic en Macro.
Access abre el Generador de macros.
En la barra de herramientas de acceso rápido, haga clic en Guardar.
En el cuadro de diálogo Guardar como , escriba un nombre para la macro y luego haga clic en Aceptar.
Continúe con la sección Agregar acciones a una macro.
Crear una macro incrustada
Este procedimiento crea una macro que se incrusta en una propiedad de evento de un objeto. Esta macro no aparece en el panel de navegación, pero se puede llamar desde eventos como Al cargar o Al hacer clic.
Dado que la macro pasa a formar parte del formulario o del objeto de informe, se recomienda usar macros integradas para automatizar tareas específicas de un formulario o informe determinado.
En el panel de navegación, haga clic con el botón secundario en el formulario o informe que contenga la macro y, a continuación, haga clic en Vista Presentación.
Si no se muestra la Hoja de propiedades, presione F4 para mostrarla.
Haga clic en el control o la sección que contenga la propiedad del evento en la que desea insertar la macro. También puede seleccionar el control o la sección (o todo el formulario o informe) mediante la lista desplegable en Tipo de selección en la parte superior de la hoja de propiedades.
En el panel de tareas Hoja de propiedades, haga clic en la pestaña Evento .
Haga clic en el cuadro de propiedades del evento en el que quiera desencadenar la macro. Por ejemplo, si desea que se ejecute un botón de comando la macro al hacer clic en él, haga clic en el cuadro de propiedad Al hacer clic .
Si el cuadro de propiedades contiene las palabras [Macro incrustada], esto significa que ya se ha creado una macro para este evento. Puede editar la macro continuando con el resto de los pasos de este procedimiento.
Si el cuadro de propiedades contiene las palabras [Procedimiento de evento], significa que ya se ha creado un procedimiento de Visual Basic para Aplicaciones (VBA) para este evento. Para poder incrustar una macro en el evento, deberá quitar el procedimiento. Puede hacerlo eliminando las palabras [Procedimiento de evento], pero primero debe examinar el procedimiento de evento para asegurarse de que quitarlo no romperá la funcionalidad necesaria en la base de datos. En algunos casos, puede recrear la funcionalidad del procedimiento VBA mediante una macro incrustada.
Haga clic en el botón

Si aparece el cuadro de diálogo Elegir generador , asegúrese de que el Generador de macros está seleccionado y, a continuación, haga clic en Aceptar.
Access abre el Generador de macros. Continúe con la sección siguiente para agregar acciones a la macro.
Agregar acciones a una macro
Las acciones son los comandos individuales que componen una macro y cada uno de ellos recibe un nombre según lo que hace, por ejemplo, BuscarRegistro o CerrarBaseDeDatos.
Paso 1: Examinar o buscar una acción de macro
El primer paso para agregar una acción es encontrarla en la lista desplegable Agregar nueva acción o en el catálogo de acciones.
Nota
De forma predeterminada, la lista desplegable Agregar nueva acción y el catálogo de acciones solo muestran las acciones que se ejecutarán en bases de datos que no son de confianza. Para ver todas las acciones:
- En la pestaña Diseño , en el grupo Mostrar/Ocultar , haga clic en Mostrar todas las acciones.
Si no se muestra el catálogo de acciones, en la pestaña Diseño , en el grupo Mostrar u ocultar , haga clic en Catálogo de acciones.
Para buscar una acción, use uno de los métodos siguientes:
- Haga clic en la flecha de la lista desplegable Agregar nueva acción y desplácese hacia abajo para encontrar la acción. Los elementos de flujo de programa se enumeran primero y luego las acciones de macro se enumeran alfabéticamente.
- Busque la acción en el panel Catálogo de acciones. Las acciones se agrupan por categoría. Expanda cada categoría para ver las acciones. Si selecciona una acción, aparece una breve descripción de la acción en la parte inferior del catálogo de acciones.
- Busque la acción en el panel Catálogo de acciones escribiendo en el cuadro de búsqueda de la parte superior del panel. A medida que escribe, la lista de acciones se filtra para mostrar todas las macros que contienen ese texto. Access busca el texto que escriba en los nombres de macros y en sus descripciones.
Paso 2: Agregar una acción a una macro
Una vez que haya encontrado la acción de macro que desea, agréguela a la macro mediante uno de estos métodos:
Seleccione una acción en la lista Agregar nueva acción o simplemente empiece a escribir el nombre de la acción en el cuadro. Access agrega la acción en el punto donde se muestra la lista Agregar nueva acción .
Arrastre la acción desde el catálogo de acciones hasta el panel de macros. Aparece una barra de inserción que muestra dónde se insertará la acción al soltar el botón del ratón.
Haga doble clic en la acción en el Catálogo de acciones.
Si se selecciona una acción en el panel de macros, Access agrega la nueva acción justo debajo de la acción seleccionada.
Si se selecciona un bloque de grupos, si, de lo contrario, si, si no osubmacro en el panel de macros, Access agrega la nueva acción a ese bloque.
Si no se selecciona ninguna acción o bloque en el panel de macros, Access agrega la nueva acción al final de la macro.
Nota
Si ya ha creado una o más macros, se enumeran en el nodo En esta base de datos en el Catálogo de acciones.
- Al arrastrar una macro independiente (una que aparece en Macros) al panel de macros, se crea una acción RunMacro que ejecuta la macro que arrastró. A continuación, puede usar la lista desplegable para llamar a submacros, si están presentes.
- Si solo desea copiar las acciones de una macro independiente a la macro actual (en lugar de crear una acción EjecutarMacro ), haga clic con el botón derecho en el Catálogo de acciones y, después, haga clic en Agregar copia de macro.
- Al arrastrar una macro incrustada (una que aparece en un objeto de formulario o informe) al panel de macros, se copian las acciones de esa macro en la macro actual.
También puede crear una acción arrastrando un objeto de base de datos desde el panel de navegación al panel de macros. Si arrastra una tabla, consulta, formulario, informe o módulo al panel de macros, Access agrega una acción que abre la tabla, consulta, formulario o informe. Si arrastra otra macro al panel de macros, Access agrega una acción que ejecuta la macro.
Paso 3: Rellenar argumentos
La mayoría de las acciones macro requieren al menos un argumento. Puede ver una descripción de cada argumento seleccionando la acción y moviendo el puntero sobre los argumentos. Para muchos argumentos, puede seleccionar un valor de una lista desplegable. Si el argumento requiere que escriba una expresión, IntelliSense le ayuda a escribir la expresión sugiriendo posibles valores mientras escribe, como se muestra en la siguiente ilustración:
Cuando vea un valor que quiera usar, agréguelo a la expresión haciendo doble clic en él o usando las teclas de dirección para resaltarlo y presionando la tecla TAB o ENTRAR.
Para obtener más información sobre la creación de expresiones, vea el artículo Introducción a las expresiones.
Acerca del uso de IntelliSense con propiedades en bases de datos web
Al crear una macro de interfaz de usuario incrustada en un formulario compatible con la web, IntelliSense permite agregar cualquier propiedad de formulario a una expresión. Sin embargo, en una base de datos web, solo se puede obtener acceso a un subconjunto de propiedades de formulario mediante macros de interfaz de usuario. Por ejemplo, dado un control llamado Control1 en un formulario denominado Form1, IntelliSense le permitirá agregar [Forms]! [Forma1]! [Control1]. [ControlSource] a una expresión en una macro de interfaz de usuario. Sin embargo, si publica la base de datos en Access Services, la macro que contiene esa expresión generará un error cuando se ejecute en el servidor.
En la tabla siguiente se muestran las propiedades que puede usar en macros de interfaz de usuario en bases de datos web:
Mover una acción
Las acciones se ejecutan en orden, desde la parte superior hasta la inferior de la macro. Para mover una acción hacia arriba o hacia abajo en la macro, utilice uno de los métodos siguientes:
- Arrastre la acción hacia arriba o hacia abajo hasta la posición que desee.
- Seleccione la acción y presione CTRL + FLECHA ARRIBA o CTRL + FLECHA ABAJO.
- Seleccione la acción y haga clic en la flecha Subir o Bajar en el lado derecho del panel de macros.
Eliminar una acción
Para eliminar una acción de macro:
Seleccione la acción y presione la tecla SUPR. Alternativamente, puede hacer clic en el botón Eliminar (X) en el lado derecho del panel de macros.
Nota
- Si elimina un bloque de acciones, como un bloque If o un bloque de grupo , también se eliminan todas las acciones del bloque.
- Los comandos Subir, Bajar y Suprimir también están disponibles en el menú contextual que aparece al hacer clic con el botón derecho en una acción de macro.
Controle el flujo del programa con If, Else If y Else
Para ejecutar acciones de macro solo cuando ciertas condiciones sean verdaderas, use un bloque IF . Esto reemplaza la columna Condición que se usaba en versiones anteriores de Access. Puede ampliar un bloque If con los bloques Else, If y Else , de forma similar a otros lenguajes de programación secuencial como VBA.
En la ilustración siguiente se muestra un bloque If sencillo, incluidos los bloques Else, If y Else :
El bloque If se ejecuta si el campo ExpirationDate es menor que la fecha actual.
El bloque Else If se ejecuta si el campo FechaDeCaducidad es igual a la fecha actual.
El bloque Else se ejecuta si ninguno de los bloques anteriores lo hace.
El bloque If termina aquí.
Agregar un bloque If a una macro
- Seleccione Si en la lista desplegable Agregar nueva acción o arrástrela desde el panel Catálogo de acciones hasta el panel Macros.
- En el cuadro situado en la parte superior del bloque Si , escriba una expresión que determine cuándo se ejecutará el bloque. La expresión debe ser booleana (es decir, una que se evalúe como sí o no).
- Agregue acciones al bloque If seleccionándolas en la lista desplegable Agregar nueva acción que aparece dentro del bloque, o arrastrándolas desde el panel Catálogo de acciones al bloque IF .
Agregar bloques Else o Else If a un bloque If
Seleccione el bloque Si, y luego, en la esquina inferior derecha del bloque, haga clic en Agregar otrolugar o Agregar otro elemento si.
Si está agregando un bloque Else If , escriba una expresión que determine cuándo se ejecutará el bloque. La expresión debe ser booleana (es decir, una que se evalúe como verdadera o falsa).
Agregue acciones al bloque Else If o Else seleccionándolas en la lista desplegable Agregar nueva acción que aparece dentro del bloque o arrastrándolas desde el panel Catálogo de acciones al bloque.
Nota
- Los comandos para agregar los bloques Si, En caso contrario, Si y Si no , están disponibles en el menú contextual que aparece al hacer clic con el botón derecho en una acción de macro.
- Si los bloques se pueden anidar hasta 10 niveles.
Crear submacros
Cada macro puede contener varias submacros. Una submacro está diseñada para ser llamada por su nombre a partir de las acciones de macro RunMacro o OnError .
Agregue un bloque de submacros a una macro de la misma manera que una acción de macro, como se describe en la sección Agregar acciones a una macro. Una vez que haya agregado un bloque de submacros , puede arrastrar acciones de macro a él o seleccionar acciones de la lista Agregar nueva acción que aparece dentro del bloque.
Nota
También puede crear un bloque de submacros seleccionando una o varias acciones, haciendo clic con el botón derecho en ellas y seleccionando Crear bloque de submacros.
Las submacros siempre deben ser los últimos bloques de una macro; No puede agregar ninguna acción (excepto más submacros) debajo de una submacro. Si ejecuta una macro que solo contiene submacros sin nombrar específicamente la submacro que desea, solo se ejecutará la primera submacro.
Para llamar a una submacro (por ejemplo, en una propiedad de evento o mediante la acción Ejecutar macro o la acción OnError ), use la sintaxis siguiente:
MacroName.SubMacroName
Agrupar acciones relacionadas
Puede mejorar la legibilidad de una macro agrupando acciones y asignando un nombre significativo al grupo. Por ejemplo, puede agrupar las acciones que abren y filtran un formulario en un grupo denominado "Abrir y filtrar formulario". Esto facilita ver qué acciones están relacionadas entre sí. Un bloque de grupo no afecta a cómo se ejecutan las acciones y el grupo no se puede llamar ni ejecutar individualmente. Su uso principal es etiquetar un grupo de acciones para ayudarle a comprender la macro a medida que la lee. Además, al editar una macro grande, puede contraer cada bloque de grupo en una sola línea, lo que reduce la cantidad de desplazamiento que tiene que hacer.
Si las acciones que desea agrupar ya están en la macro, use este procedimiento para agregarlas a un bloque de grupo :
- Seleccione las acciones que desea agrupar.
- Haga clic con el botón derecho en las acciones seleccionadas y, a continuación, haga clic en Crear bloque de grupo.
- En el cuadro de la parte superior del bloque Grupo , escriba un nombre para el grupo.
Si las acciones aún no están presentes:
- Arrastre el bloque de grupo desde el catálogo de acciones hasta el panel de macros.
- En el cuadro de la parte superior del bloque Grupo , escriba un nombre para el grupo.
- Arrastre acciones de macro del catálogo de acciones al bloque de grupo o seleccione acciones de la lista Agregar nueva acción que aparece dentro del bloque.
Los bloques de grupo pueden contener otros bloques de grupo y se pueden anidar hasta un máximo de 9 niveles.
Expandir y contraer acciones o bloques de macros
Al crear una macro, el generador de macros muestra acciones de macro con todos los argumentos visibles. Según el tamaño de la macro, es posible que desee contraer algunas o todas las acciones de la macro (y bloques de acciones) mientras edita la macro. Esto facilita obtener una visión general de la estructura de la macro. Puede expandir algunas o todas las acciones según sea necesario para editarlas.
Expandir o contraer una sola macro, acción o bloque
- Haga clic en el signo más (+) o menos (-) a la izquierda del nombre de la macro o del bloque. Como alternativa, presione las teclas FLECHA ARRIBA y FLECHA ABAJO para seleccionar una acción o un bloque y, luego, presione las teclas FLECHA IZQUIERDA o FLECHA DERECHA para contraerlo o expandirlo.
Expandir o contraer todas las acciones de macro (pero no bloques)
- En la pestaña Diseño , en el grupo contraer/expandir , haga clic en Expandir acciones o Contraer acciones.
Expandir o contraer todas las acciones y bloques de macros
- En la pestaña Diseño , en el grupo Contraer o expandir , haga clic en Expandir todo o Contraer todo.
Recomendación
Puede "echar un vistazo" dentro de una acción contraída moviendo el puntero sobre la acción. Access muestra los argumentos de acción en una información sobre herramientas.
Copiar y pegar acciones de macro
Si necesita repetir acciones que ya ha agregado a una macro, puede copiar y pegar las acciones existentes de la misma forma que haría con párrafos de texto en un procesador de textos. Al pegar acciones, se insertan justo debajo de la acción seleccionada actualmente. Si se selecciona un bloque, las acciones se pegan dentro del bloque.
Recomendación
Para duplicar rápidamente las acciones seleccionadas, mantenga presionada la tecla CTRL y arrastre las acciones a la ubicación de la macro donde desea copiarlas.
Compartir una macro con otros usuarios
Al copiar acciones de macro en el portapapeles, se pueden pegar como Lenguaje de marcado extensible (XML) en cualquier aplicación que acepte texto. Esto le permite enviar una macro a un compañero a través de un mensaje de correo electrónico o publicar la macro en un foro de discusión, blog u otro sitio web. A continuación, el destinatario puede copiar el archivo XML y pegarlo en su generador de macros de Access. La macro se recrea tal y como la escribió.
Ejecutar una macro
Puede ejecutar una macro mediante cualquiera de los métodos siguientes:
- Haga doble clic en la macro en el panel de navegación.
- Llame a la macro mediante la acción de macro RunMacro o OnError .
- Escriba el nombre de la macro en una propiedad Event de un objeto. La macro se ejecutará cuando se desencadene ese evento.
Depurar una macro
Si tiene problemas para ejecutar una macro, hay un par de herramientas que puede usar para llegar al origen del problema.
Agregar acciones de control de errores a una macro
Se recomienda agregar acciones de control de errores a cada macro a medida que la escribe y dejarlas en la macro de forma permanente. Al utilizar este método, Access muestra descripciones de los errores a medida que se produzcan. Las descripciones de los errores le ayudan a comprender el error, para que pueda corregirlo más rápidamente.
Utilice el siguiente procedimiento para agregar una submacro de control de errores a una macro:
- Abrir la macro en la vista Diseño.
- En la parte inferior de la macro, seleccione Submacro en la lista desplegable Agregar nueva acción .
- En el cuadro situado a la derecha de la palabra Submacro, escriba un nombre para la submacro, como ErrorHandler.
- En la lista desplegable Agregar nueva acción que aparece dentro del bloque Submacro , seleccione la acción de macro Cuadro de mensajes .
- En el cuadro de mensaje , escriba el siguiente texto: =[MacroError].[ Descripción]
- En la parte inferior de la macro, seleccione OnError en la lista desplegable Agregar nueva acción .
- Establezca el argumento Ir a en Nombre de macro.
- En el cuadro Nombre de macro, escriba el nombre de la submacro para control de errores (en este ejemplo, ErrorHandler).
- Arrastre la acción de macro OnError a la parte superior de la macro.
En la siguiente ilustración se muestra una macro con la acción OnError y una submacro denominada ErrorHandler.
La acción de macro OnError se coloca en la parte superior de la macro y llama a la submacro ErrorHandler en caso de error.
La submacro ErrorHandler solo se ejecuta si la acción OnError la llama y muestra un cuadro de mensaje que describe el error.
Usar el comando de un solo paso
Paso único es un modo de depuración de macros que puede usar para ejecutar una macro con una acción a la vez. Después de realizar cada acción, aparece un cuadro de diálogo que muestra información sobre la acción y los códigos de error que se produjeron como resultado. Sin embargo, dado que no hay ninguna descripción del error en el cuadro de diálogo Macro de un solo paso, se recomienda usar el método de submacros de control de errores descrito en la sección anterior.
Para iniciar el modo de un solo paso:
- Abrir la macro en la vista Diseño.
- En la pestaña Diseño , en el grupo Herramientas , haga clic en Paso único.
- Guarde y cierre la macro.
La próxima vez que ejecute la macro, aparecerá el cuadro de diálogo Macro de un solo paso . El cuadro de diálogo muestra la siguiente información sobre cada acción:
- Nombre de la macro
- Condición (para bloques IF)
- Nombre de acción
- Argumentos
- Número de error (un número de error 0 significa que no se ha producido ningún error)
A medida que avanza por las acciones, haga clic en uno de los tres botones del cuadro de diálogo:
Para ver información sobre la siguiente acción de la macro, presione Paso.
Para detener las macros que se están ejecutando, haga clic en Detener todas las macros. El modo de paso único seguirá estando vigente la próxima vez que ejecute una macro.
Para salir del modo de paso único y seguir ejecutando la macro, haga clic en Continuar.
Nota
- Si presiona Paso después de la última acción de una macro, el modo de paso único seguirá vigente la próxima vez que ejecute una macro.
- Para entrar en el modo de un solo paso mientras se ejecuta una macro, presione CTRL+BREAK.
- Para entrar en el modo de paso único en un punto específico de una macro, agregue la acción de macro SingleStep en ese punto.
- El modo de paso único no está disponible en una base de datos web.
Convertir una macro en código VBA
Las macros proporcionan un subconjunto de los comandos que están disponibles en el lenguaje de programación de Visual Basic para Aplicaciones (VBA). Si decide que necesita más funcionalidad de la que pueden proporcionar las macros, puede convertir fácilmente un objeto de macro independiente en código VBA y, a continuación, hacer uso del conjunto de características ampliado que proporciona VBA. Tenga en cuenta, sin embargo, que el código VBA no se ejecutará en un navegador; cualquier código VBA que agregue a una base de datos web solo se ejecutará cuando la base de datos esté abierta en Access.
Nota
No se pueden convertir macros incrustadas en código VBA.
Para convertir una macro en código VBA:
- En el panel de navegación, haga clic con el botón derecho en el objeto de macro y, después, haga clic en la vista Diseño.
- En la pestaña Diseño , en el grupo Herramientas , haga clic en Convertir macros a Visual Basic.
- En el cuadro de diálogo Convertir macro , especifique si desea que el código de control de errores y los comentarios se agreguen al módulo de VBA y, a continuación, haga clic en Convertir.
Access confirma que la macro se ha convertido y abre el Editor de Visual Basic. Haga doble clic en la macro convertida en el panel Proyecto para ver y editar el módulo.