access

Macros en Excel desde Access: cómo ejecutarlas paso a paso

octubre 17, 2026 Tuto Excel 14 min read
Macros en Excel desde Access: cómo ejecutarlas paso a paso

Una macro de Access es una lista de acciones guardadas que el programa ejecuta por ti al pulsar un botón, al cambiar un registro o al abrir la base. Con macros puedes filtrar un formulario, impedir que se guarde un dato vacío o enviar una tabla a Excel sin escribir código. Al terminar este tutorial tendrás un formulario de Clientes con un botón que abre los pedidos del cliente visible, una validación que bloquea pedidos sin cliente y una exportación automática a Excel.

Qué es una macro de Access y para qué te sirve

Una macro de Access es una secuencia de acciones que se ejecuta cuando ocurre algo: al hacer clic en un botón, al abrir un formulario o al guardar un registro. Imagina la base de la tienda: una tabla Clientes con IdCliente y Nombre, y una tabla Pedidos con IdPedido, IdCliente, Fecha e Importe. Cada día entras en Clientes, buscas al cliente del día y quieres ver solo sus pedidos. Una macro hace ese paso por ti: pulsas un botón y Access abre Pedidos filtrado por el cliente que tienes en pantalla, sin escribir ningún criterio a mano. Access 2026 incluye el Generador de macros con autocompletado, así que no necesitas memorizar el nombre de cada acción: empiezas a escribir y la herramienta te sugiere. Las macros se guardan dentro del propio archivo .accdb y no requieren permisos especiales para ejecutarse.

Macros de Access frente a macros de Excel: parecidos engañosos

Misma palabra, idea distinta. En Excel grabas una macro con la cinta y el resultado es un módulo VBA dentro del libro; en Access construyes la macro con un generador visual (el Macro Builder) eligiendo acciones de una lista, y el resultado es un objeto que vive en el panel de navegación o dentro del formulario. La macro de Excel ejecuta código VBA; la macro de Access ejecuta acciones declarativas, que Access traduce internamente. La consecuencia práctica es importante: la macro de Access es más segura (no ejecuta código arbitrario) y más fácil de mantener, pero no puede hacer todo lo que hace VBA, como crear funciones propias o llamar a bibliotecas externas.

Dónde se crean y cómo se guardan

En Access las macros se crean desde la pestaña Crear de la cinta de opciones. Allí encontrarás el grupo Macros y código con tres botones: Macro (para macros independientes), Módulo (para VBA) y Macro de datos (lógica que vive dentro de una tabla). Los cambios se guardan automáticamente al cerrar el generador, con Ctrl+G o al cambiar de pestaña. No hay un botón Guardar como en Excel: Access gestiona las versiones por ti.

CrearMacros y códigoMacro

Macros incrustadas en un control

Viven dentro del propio formulario o informe, no aparecen en el panel de navegación. Son las que crea el Asistente para botones de comando cuando dibujas un botón en un formulario y eliges una acción de la lista. Sirven para automatizar un solo formulario y desaparecen si borras el control.

Macros independientes con nombre propio

Son objetos del panel de navegación, junto a las tablas y los formularios. Se crean con Crear > Macros y código > Macro, se les pone un nombre y se reutilizan desde varios formularios o informes con la acción EjecutarMacro. Son la opción correcta cuando la misma lógica la necesitan varios objetos.

La macro AutoExec que arranca al abrir la base

Una macro independiente con el nombre exacto AutoExec se ejecuta al abrir la base, antes que cualquier formulario de inicio. Sirve para abrir el formulario principal, mostrar un menú o configurar variables. Para depurar sin que se ejecute, abre Access con la tecla Mayús pulsada mientras cargas el archivo: Access saltará la AutoExec y entrará directo a la base.

  1. Pulsa Mayús y, sin soltarla, haz doble clic en el archivo .accdb.
  2. Access abre la base sin ejecutar AutoExec.
  3. Corrige lo que necesites, guarda y la próxima vez ya correrá con normalidad.

La ficha Propiedades: la puerta de entrada de cada macro

Cada control de un formulario tiene una ficha Propiedades donde se le asigna una macro a un evento. Para abrirla, selecciona el control y pulsa F4. Verás varias pestañas: Formato, Datos, Eventos y Otras. La pestaña Eventos lista las situaciones que disparan macros: Al hacer clic, Antes de actualizar, Al abrir, Al cerrar. Haz clic en el evento que quieras y pulsa el botón con los puntos suspensivos (…) que aparece a su derecha: Access te preguntará si quieres abrir el Generador de macros.

Tu primer botón con macro: abrir el formulario de Pedidos del cliente actual

Vamos a la práctica. La base tiene dos tablas: Clientes (IdCliente, Nombre) y Pedidos (IdPedido, IdCliente, Fecha, Importe). Vamos a dibujar un botón en el formulario Clientes que, al pulsarlo, abra el formulario Pedidos filtrado por el cliente visible.

Dibujar el botón y elegir la acción AbrirFormulario

Abre el formulario Clientes en Vista Diseño. En la pestaña Diseño de la cinta, en el grupo Controles, activa el botón Botón y dibújalo en la sección Detalle. Cuando aparezca el asistente, pulsa Cancelar (queremos escribir la macro nosotros). Selecciona el botón, pulsa F4, ve a la pestaña Eventos, haz clic en Al hacer clic y pulsa los puntos suspensivos. Access te pregunta qué generador usar: elige Generador de macros y pulsa Aceptar. En el panel de la izquierda verás el catálogo de acciones: busca AbrirFormulario, haz doble clic y configura sus argumentos.

DiseñoControlesBotón

El Where Condition: que solo salgan los pedidos del cliente

El argumento Where Condition es la pieza clave: es la condición SQL que filtra los registros. La sintaxis tiene dos lados separados por un signo igual: a la izquierda, el campo del formulario que vas a abrir (IdCliente de Pedidos); a la derecha, de dónde se toma el valor ([Formularios]![Clientes]![IdCliente]). Cuando Access ejecute la macro, sustituirá la parte derecha por el valor del cliente visible y mostrará solo sus pedidos.

[IdCliente]=[Formularios]![Clientes]![IdCliente]

Probar el botón en Vista Formulario y comprobar el filtro

Cambia a Vista Formulario con el botón de la esquina inferior izquierda o pulsa F5. Verás el primer cliente. Pulsa el botón que acabas de crear: se abrirá el formulario Pedidos con la lista filtrada. Usa las flechas de navegación de Clientes para cambiar de registro y vuelve a pulsar el botón: el filtro se actualiza automáticamente porque el Where Condition lee el valor actual del control en cada ejecución.

IDCLIENTE=1fx
A B C
1 formulario: Clientes
2 IdCliente Nombre
3 1 1 Ana Ruiz
4 2 2 Pedro Soto
5 3 3 Luis Mata
Al pulsar el botón se abre Pedidos filtrado por IdCliente=1
Clientes
Comprueba: Al pulsar el botón, Pedidos solo muestra las filas cuyo IdCliente coincide con el del formulario Clientes. Si ves todos los pedidos, revisa el Where Condition.

Impedir guardar un pedido sin cliente con la macro BeforeUpdate

Ahora vamos con la validación. Imagina que alguien intenta guardar un pedido sin rellenar IdCliente: la tabla lo rechazaría, pero el mensaje de error de Access es técnico. Con una macro en el evento Antes de actualizar del formulario, puedes interceptar el guardado y avisar al usuario con un mensaje claro.

Abre el formulario Pedidos en Vista Diseño, pulsa F4 y ve a la pestaña Eventos. Haz clic en Antes de actualizar y abre el Generador de macros. En el panel Catálogo de acciones, busca Si y haz doble clic. Access crea un bloque Si con tres líneas: el criterio, la acción Si es verdadera y la acción Si es falsa. En el criterio escribe EsNulo([IdCliente]) (EsNulo es la versión en español de IsNull).

Nota: En Excel configurado con punto decimal (México, Estados Unidos) el separador de argumentos es la coma, no el punto y coma.

El orden de las acciones dentro del bloque Si

El orden importa: primero CuadroMsj muestra el aviso, después CancelarEvento detiene el guardado y por último IrAControl lleva al usuario al campo vacío. Si pones IrAControl antes de CancelarEvento, el foco se moverá pero Access continuará el guardado. Tres líneas, en ese orden.

Comprueba: Intenta guardar un pedido con IdCliente vacío: aparece el mensaje "No puedes guardar un pedido sin cliente", el guardado se cancela y el cursor salta al campo IdCliente. Si el mensaje no aparece, revisa que el evento sea Antes de actualizar y no Después de actualizar.

Pasar datos entre Access y Excel sin copiar y pegar

Access y Excel se entienden bien, pero cada uno hace lo suyo. Para llevar una tabla de Access a Excel usa la cinta de Access; para traer datos desde un .accdb a Excel usa la cinta de Excel.

Desde Access, abre la tabla Pedidos, ve a Datos externos > Exportar > Excel, elige la carpeta y pulsa Aceptar. Access crea un .xlsx con los valores y los formatos básicos.

Datos externosExportarExcel

Desde Excel, para traer la tabla, abre un libro nuevo y ve a Datos > Obtener datos > Desde base de datos > Desde Microsoft Access. Elige el archivo .accdb, selecciona la tabla Pedidos y pulsa Cargar. Aparece como tabla dinámica o como tabla normal según elijas.

DatosObtener datosDesde base de datosDesde Microsoft Access
Cuidado: El acceso desde Excel a una base Access solo funciona en Windows. Excel para Mac y Excel para la web no pueden abrir archivos .accdb directamente.

Cuando las macros no hacen lo que esperas

Tres causas reales, con la base de Clientes y Pedidos como ejemplo. La más común es que la macro esté desactivada por el centro de confianza; la segunda, que el Where Condition apunte a un campo mal escrito; la tercera, que haya dos macros disparándose al abrir.

La barra amarilla bloquea las macros en silencio

Access puede deshabilitar las macros de una base sin avisar con un cuadro, solo con una barra amarilla bajo la cinta. Para evitarlo, añade la carpeta de la base a las Ubicaciones de confianza.

  1. Abre Access y ve a Archivo > Opciones > Centro de confianza > Configuración del centro de confianza > Ubicaciones de confianza.
  2. Pulsa Agregar nueva ubicación, elige la carpeta donde guardas la base y marca Confiar también en las subcarpetas.
  3. Pulsa Aceptar, cierra Access y vuelve a abrir la base.
ArchivoOpcionesCentro de confianzaConfiguración del centro de confianzaUbicaciones de confianza

El filtro del botón no cambia al cambiar de cliente

El Where Condition apunta a un campo que no existe o usa el nombre de la tabla mal escrito. Vuelve al Generador de macros de la acción AbrirFormulario y revisa el Where Condition: la parte izquierda debe ser exactamente el nombre del campo destino (IdCliente, con esa mayúscula) y la derecha debe usar la sintaxis completa [Formularios]![NombreFormulario]![NombreControl]. Un error frecuente es escribir [Formularios]![Clientes]![Id_Cliente] cuando el control se llama IdCliente, sin guion bajo.

La macro se ejecuta dos veces al abrir

Hay una macro AutoExec y un formulario de inicio con otra macro en el evento Al abrir. Cuando la base carga, AutoExec corre la primera macro y luego se muestra el formulario de inicio, cuya macro Al abrir corre la segunda. Deja solo una de las dos: si la lógica es siempre la misma, guárdala en AutoExec y quita la del formulario.

Macros de datos: lógica que vive dentro de la tabla

Las macros de datos son un tipo especial que se asocia a una tabla, no a un formulario. Se crean en la pestaña Diseño de la tabla, con el botón Crear macros de datos, y se disparan con eventos de tabla: Después de insertar, Después de actualizar, Antes de eliminar. Sirven para auditoría (escribir en una tabla de Log quién modificó qué registro) y para validación invisible para quien solo mira formularios. Si alguien entra directo a la tabla e inserta un registro con datos malos, la macro de datos lo detecta igual que si lo hubiera hecho desde el formulario. La limitación: solo pueden usar acciones del catálogo que trabaja con datos (CuadroMsj, EstablecerValor, DetenerMacro), no acciones de interfaz como AbrirFormulario.

Cuándo dar el salto a VBA y qué solo VBA puede hacer

La propia documentación de Access recomienda usar macros siempre que se pueda: son más seguras (no ejecutan código arbitrario) y más fáciles de mantener. VBA entra en escena cuando la macro se queda corta: crear funciones propias que devuelvan un valor, llamar a DLLs de Windows, automatizar otros programas de Office (enviar un correo desde Outlook con un adjunto, por ejemplo) o recorrer un conjunto de registros uno a uno con un bucle. Si necesitas sumar los importes de los pedidos de un cliente y mostrarlos en un campo calculado, una función propia en VBA es la respuesta; el catálogo de acciones de macros no tiene un bucle genérico.

Lo que ya sabes hacer con macros de Access

  • Abrir un formulario filtrado con la acción AbrirFormulario y un Where Condition.
  • Bloquear un guardado vacío con un bloque Si en el evento Antes de actualizar.
  • Crear macros independientes reutilizables y una macro AutoExec para el inicio.
  • Exportar tablas a Excel y traer datos desde un .accdb con Datos > Obtener datos.
  • Diagnosticar los tres errores más comunes: macros deshabilitadas, filtros mal escritos y macros duplicadas.

El siguiente paso es convertir una macro incrustada a VBA para ver el código que Access genera por dentro. Selecciona el control con la macro, pulsa el botón derecho, elige Convertir macros a Visual Basic y acepta el mensaje: Access crea un módulo nuevo con el equivalente VBA de tu macro, perfecto para entender qué hace cada acción y empezar a programar.

Dudas al usar macros de Access

  • ¿Las macros de Access sirven en Excel? No, son objetos distintos. En Excel usas macros VBA dentro de un libro .xlsm.
  • ¿Por qué mi macro no se ejecuta al abrir la base? Comprueba que la macro se llame exactamente AutoExec y que el centro de confianza no la haya bloqueado.
  • ¿Puedo llamar a una macro de Access desde VBA? Sí, con la instrucción DoCmd.RunMacro "NombreMacro".
  • ¿Las macros de Access son seguras en un .accdb descargado? Access deshabilita las macros de archivos de internet por defecto; añade la carpeta a las Ubicaciones de confianza si confías en el origen.
  • ¿Cuándo conviene pasar de macros a VBA? Cuando necesites funciones propias, bucles sobre registros, llamadas a DLLs o automatización de otros programas.

Dudas al usar macros de Access

1. Ejemplos de macros en Microsoft Access

En Access una macro puede abrir un formulario al iniciar (AutoExec), ejecutar una consulta de actualización al pulsar un botón o enviar un registro por correo. Cada acción se elige de un catálogo desplegable y se configura con unos pocos argumentos, sin escribir código VBA.

2. Qué es una macro en Excel

Una macro en Excel es una secuencia de acciones grabadas o programadas que se ejecuta con un atajo o un clic. Sirve para automatizar tareas repetitivas como formatear tablas, filtrar datos o generar informes, y se crea con la grabadora de macros o escribiendo código VBA.

3. Qué es una macro en informática

En informática, una macro es una instrucción que agrupa varios comandos bajo un solo nombre o atajo para ejecutarlos de una vez. Se usa en programas ofimáticos, hojas de cálculo, juegos y editores de texto para ahorrar tiempo al repetir acciones largas o complejas.

4. Qué es una macro en Microsoft

Una macro en Microsoft es una automatización que reproduce una serie de pasos dentro de sus aplicaciones (Excel, Word, Access, Outlook). En Office se crean con la grabadora de macros, con el editor de VBA o con Power Automate, según el programa y la versión.

5. Qué es una macro en los videojuegos

En videojuegos, una macro es una secuencia de acciones o teclas asignada a una sola pulsación, normalmente para repetir combos o movimientos con precisión. Muchos juegos multijugador las prohíben porque dan ventaja automatizando reacciones que se supone debe ejecutar una persona.

6. La macro AutoExec de Access

La macro AutoExec se ejecuta automáticamente al abrir la base de datos Access y sirve para preparar el entorno al iniciar: abrir un formulario principal, ocultar el panel de navegación o mostrar un mensaje de bienvenida. Se crea como una macro normal con el nombre AutoExec, sin programación extra.

7. Lista de comandos de macros en Microsoft Access

Access agrupa sus comandos de macro en categorías como Flujo de programas (Si, DetenerMacro), Objeto de formulario (AbrirFormulario, IrARegistro), Datos (EstablecerValor, EjecutarConsulta) y Entrada/Salida (CuadroDeMensaje, EnviarCorreo). Se consultan en el catálogo que se abre al crear una macro nueva.

Fuentes

  1. MicrosoftAccess macro actions (Access Developer Reference) – Microsoft Learnconsultado el 06/10/2026
  2. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 06/10/2026
  3. MicrosoftExcel y Access — documentación oficialconsultado el 06/10/2026
  4. MicrosoftAtajos propios y reasignar atajos en Excel — documentación oficialconsultado el 06/10/2026
  5. MicrosoftHIPERVINCULO — documentación oficialconsultado el 06/10/2026