En Microsoft Access, las macros que se adjuntan a objetos de interfaz de usuario (IU), como botones de comando, cuadros de texto, formularios e informes, se conocen como macros de interfaz de usuario. Esto los distingue de las macros de datos, que se adjuntan a las tablas. Las macros (IU) 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. En este artículo se presenta el nuevo generador de macros y se muestran las tareas básicas relacionadas con la creación de una macro de interfaz de usuario.
Nota: Este artículo no se aplica a las aplicaciones web de Access.
En este artículo
Información general
Las macros pueden estar contenidas en objetos de macro (a veces denominadas macros independientes) o pueden insertarse 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 están.
Cada macro se compone de una o más acciones de macro. En función del 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 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 sencilla.
-
Flujo de programas Cree macros más legibles con líneas de comentarios y grupos de acciones.
-
Instrucciones condicionales Permita la ejecución lógica más compleja con compatibilidad con las funciones If/Else/Else If anidadas.
-
Reutilización de macros El Catálogo de acciones muestra otras macros que ha creado, lo que le permite copiarlas en la que está trabajando.
-
Uso compartido más sencillo Copie una macro y péguela como XML en un correo electrónico, una publicación del grupo de noticias, un blog o un sitio web de ejemplo de código.
Este es un vídeo que le guiará por las áreas principales del Generador de macros.
Crear una macro independiente
Este procedimiento crea un objeto de macro independiente que aparecerá en Macros en el panel de navegación. Las macros independientes son útiles cuando se desea volver a usar 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, a continuación, haga clic en Aceptar.
-
Continúe con la sección Agregar acciones a una macro.
Crear una macro incrustada
Este procedimiento crea una macro incrustada en una propiedad de evento de un objeto. Dicha 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 objeto de formulario o informe, se recomiendan las macros incrustadas 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 contendrá 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 contiene la propiedad de 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 que desea que se desencadene la macro. Por ejemplo, para un botón de comando, si quiere que la macro se ejecute al hacer clic en el botón, haga clic en el cuadro de la 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 si continúa con los pasos restantes de este procedimiento.
-
Si el cuadro de propiedad contiene las palabras [Procedimiento de evento], esto significa que ya se ha creado un procedimiento de Visual Basic para Aplicaciones (VBA) para este evento. Antes de poder insertar una macro en el evento, tendrá que 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 volver a crear la funcionalidad del procedimiento de VBA mediante una macro incrustada.
-
Haga clic en el botón Generar .
-
Si aparece el cuadro de diálogo Elegir generador , asegúrese de que generador de macros está seleccionado y, a continuación, haga clic en Aceptar.
Access abre el Generador de macros. Continúe con la siguiente sección para agregar acciones a la macro.
Agregar acciones a una macro
Acciones son los comandos individuales que conforman una macro y cada uno de ellos se denomina 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.
Notas:
-
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 sean de confianza. Para ver todas las acciones:
-
En la pestaña Diseño , en el grupo Mostrar u 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 buscar la acción. Primero se muestran los elementos de flujo de programa y, a continuación, las acciones de macro se muestran 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, aparecerá 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. Mientras escribe, la lista de acciones se filtra para mostrar todas las macros que contienen ese texto. Access busca el texto que escriba, tanto en los nombres de las macros como 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 de la lista Agregar nueva acción o 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 para mostrarle dónde se insertará la acción al soltar el botón del mouse.
-
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 seleccionada.
-
Si un bloque Agrupar, Si, Si no, Si no, o Submacro está seleccionado 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.
Notas:
-
Si ya ha creado una o más macros, se mostrarán en el nodo En esta base de datos del Catálogo de acciones.
-
Al arrastrar una macro independiente (que se muestra en Macros) en el 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á presente.
-
Si solo desea copiar las acciones de una macro independiente en la macro actual (en lugar de crear una acción RunMacro ), haga clic con el botón derecho en ella en el Catálogo de acciones y, a continuación, haga clic en Agregar copia de macro.
-
Al arrastrar una macro incrustada (una que aparece bajo un objeto de formulario o informe) en el 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 hasta el 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 de 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 escribirla 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, a continuación, presionando la tecla TAB o ENTRAR.
Para obtener más información sobre cómo crear 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 web, IntelliSense le permite agregar cualquier propiedad de formulario a una expresión. Sin embargo, en una base de datos web, solo se puede acceder a un subconjunto de propiedades de formulario mediante macros de interfaz de usuario. Por ejemplo, dado un control denominado Control1 en un formulario denominado Formulario1, IntelliSense le permitirá agregar [Formularios]! [Formulario1]! [Control1]. [ControlSource] a una expresión en una macro de interfaz de usuario. Sin embargo, si después 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 se pueden usar en las macros de interfaz de usuario en las bases de datos web:
Objeto o control |
Propiedades que puede usar |
---|---|
Formulario |
Caption, Dirty, AllowAdditions, AllowDeletions, AllowEdits |
Control de pestaña |
Visible |
Etiqueta |
Título, Visible, Color del anteo, Color de fondo |
Datos adjuntos |
Visible, habilitado |
Botón de comando |
Título, Visible, Habilitado, Color del anteo |
Tex tBox |
Enabled, Visible, Locked, Fore Color, Back Color, value |
Casilla |
Habilitado, Visible, Bloqueado, Valor |
Imagen |
Visible, Color de fondo |
Cuadro combinado |
Habilitado, Visible, Bloqueado, Valor |
Cuadro de lista |
Habilitado, Visible, Bloqueado, Valor |
Navegador |
Visible |
Subformulario |
Habilitado, visible bloqueado |
Control de navegación |
Habilitado, visible |
Mover una acción
Las acciones se ejecutan en orden, de arriba a abajo de la macro. Para mover una acción hacia arriba o hacia abajo en la macro, use uno de los métodos siguientes:
-
Arrastra la acción hacia arriba o hacia abajo hasta donde quieras.
-
Seleccione la acción y, a continuación, presione CTRL + FLECHA ARRIBA o CTRL + FLECHA ABAJO.
-
Seleccione la acción y, a continuación, 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, después, presione la tecla SUPRIMIR. Como alternativa, puede hacer clic en el botón Eliminar (X) en el lado derecho del panel de macros.
Notas:
-
Si elimina un bloque de acciones, como un bloque If o un bloque de grupo , también se eliminarán todas las acciones del bloque.
-
Los comandos Subir, Bajar y Eliminar 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.
-
Controlar el flujo del programa con If, Else If y Else
Para ejecutar acciones de macro solo cuando se cumplen ciertas condiciones, use un bloque If . Esto reemplaza la columna Condición que se usó en versiones anteriores de Access. Puede extender un bloque If con bloques Else If y Else , de forma similar a otros lenguajes de programación secuenciales 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 ExpirationDate 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ástrelo desde el panel Catálogo de acciones hasta el panel de macros.
-
En el cuadro situado en la parte superior del bloque 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 Sí o No).
-
Agregue acciones al bloque Si 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 hasta el bloque Si .
Add Else or Else If bloquea a un bloque If
-
Seleccione el bloque Si y, a continuación, en la esquina inferior derecha del bloque, haga clic en Agregar más o Agregar si.
-
Si va a agregar 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 dé como resultado Verdadero o Falso).
-
Agregue acciones al bloque Si o Si no 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 hasta el bloque.
Notas:
-
Los comandos para agregar los bloques Si, Si ySi no están disponibles en el menú contextual que aparece al hacer clic con el botón secundario en una acción de macro.
-
Si los bloques se pueden anidar hasta 10 niveles de profundidad.
-
Crear submacros
Cada macro puede contener varias submacros. Una submacro se llama por nombre desde las acciones de macro RunMacro o OnError .
Agregue un bloque submacro a una macro del mismo modo 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 submacro , puede arrastrar acciones de macro a él o seleccionar acciones de la lista Agregar nueva acción que aparece dentro del bloque.
Notas:
-
También puede crear un bloque submacro seleccionando una o más acciones, haciendo clic con el botón derecho en ellas y seleccionando Crear bloque de submacro.
-
Submacros debe ser siempre los últimos bloques de una macro; no puedes 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 RunMacro 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, podría agrupar acciones que abran y filtre un formulario en un grupo denominado "Abrir y filtrar formulario". Esto hace que sea más fácil ver qué acciones están relacionadas entre sí. Un bloque de grupo no afecta a cómo se ejecutan las acciones y no se puede llamar al grupo ni ejecutarlo individualmente. Su uso principal es etiquetar un grupo de acciones para ayudarle a comprender la macro mientras la lee. Además, al editar una macro de gran tamaño, 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 situado en la parte superior del bloque de grupo, escriba un nombre para el grupo.
Si las acciones aún no están presentes:
-
Arrastre el bloque Grupo desde el Catálogo de acciones hasta el panel de macros.
-
En el cuadro situado en la parte superior del bloque de grupo, escriba un nombre para el grupo.
-
Arrastre las acciones de macro del Catálogo de acciones al bloque 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 de profundidad.
Expandir y contraer bloques o acciones de macro
Al crear una nueva 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 macro (y bloques de acciones) mientras edita la macro. Esto hace que sea más fácil obtener una vista general de la estructura de la macro. Puede expandir algunas o todas las acciones necesarias para editarlas.
Expandir o contraer una sola acción o bloque de macro
-
Haga clic en el signo más (+) o menos (-) situado a la izquierda de la macro o en el nombre del bloque. Como alternativa, presione las teclas FLECHA ARRIBA y FLECHA ABAJO para seleccionar una acción o un bloque y, después, presione las teclas FLECHA IZQUIERDA o FLECHA DERECHA para contraerla o expandirla.
Expandir o contraer todas las acciones de macro (pero no bloques)
-
En la pestaña Diseño , en el grupo Contraer o expandir , haga clic en Expandir acciones o Contraer acciones.
Expandir o contraer todas las acciones y bloques de macro
-
En la pestaña Diseño , en el grupo Contraer o expandir , haga clic en Expandir todo o Contraer todo.
Sugerencia: Puede "ojear" 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 necesitas repetir acciones que ya has agregado a una macro, puedes copiar y pegar las acciones existentes de la misma forma que lo harías con párrafos de texto en un procesador de texto. 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.
Sugerencia: Para duplicar rápidamente las acciones seleccionadas, mantenga presionada la tecla CTRL y arrastre las acciones a la ubicación de la macro donde quiere que se copien.
Compartir una macro con otras personas
Al copiar acciones de macro en el Portapapeles, se pueden pegar como XML (Lenguaje de marcado extensible) 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 vuelve a crear 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 con 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 el evento.
Depurar una macro
Si tienes problemas para ejecutar una macro, hay un par de herramientas que puedes 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 escriba y dejarlas en la macro de forma permanente. Al usar este método, Access muestra descripciones de los errores a medida que se producen. Las descripciones del error le ayudan a comprender el error para que pueda corregir el problema más rápidamente.
Use el procedimiento siguiente 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 justo 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 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 la macro.
-
En el cuadro Nombre de la macro , escriba el nombre de la submacro de control de errores (en este ejemplo, ErrorHandler).
-
Arrastre la acción de macro OnError hasta la parte superior de la macro.
En la ilustración siguiente 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
Un solo paso es un modo de depuración de macros que puede usar para ejecutar una macro de una en una. 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, como 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 submacro 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 la acción
-
Argumentos
-
Número de error (un número de error de 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 actualmente, haga clic en Detener todas las macros. El modo de paso único seguirá estando en vigor la próxima vez que ejecute una macro.
-
Para salir del modo de un solo paso y seguir ejecutando la macro, haga clic en Continuar.
Notas:
-
Si presiona Paso después de la última acción de una macro, el modo paso a paso seguirá estando en vigor la próxima vez que ejecute una macro.
-
Para entrar en el modo de paso único mientras se ejecuta una macro, presione CTRL+BREAK.
-
Para especificar el modo paso a paso en un punto específico de una macro, agregue la acción de macro SingleStep en ese momento.
-
El modo de paso único no está disponible en una base de datos web.
-
Convertir una macro en código de 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 de VBA y, a continuación, hacer uso del conjunto de características expandido que proporciona VBA. Tenga en cuenta, sin embargo, que el código VBA no se ejecutará en un explorador; 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 puede convertir macros incrustadas en código vba.
Para convertir una macro en código de VBA:
-
En el panel de navegación, haga clic con el botón secundario en el objeto de macro y, a continuación, haga clic en Vista Diseño.
-
En la pestaña Diseño , en el grupo Herramientas , haga clic en Convertir macros en Visual Basic.
-
En el cuadro de diálogo Convertir macro , especifique si desea agregar código y comentarios de control de errores al módulo 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.