Al crear una nueva base de datos, normalmente empieza por crear objetos de base de datos como tablas, formularios e informes. En algún momento, es posible que deba agregar programación para automatizar procesos y conectar esos objetos. En este artículo se presentan las herramientas de programación en Access.
En este artículo
- ¿Qué es la programación
- ¿Debo usar macros o código de VBA?
- Usar el Asistente para botones de comando para realizar tareas comunes de programación
- Obtener información sobre macros
- Obtener información sobre código de VBA
- Convertir macros en código de VBA
¿Qué es la programación
En Access, programar implica agregar funcionalidad a la base de datos mediante macros de Access o código (VBA) de Visual Basic para Aplicaciones. Por ejemplo, puede crear un formulario y un informe y, después, agregar un botón de comando al formulario que abra el informe cuando lo seleccione. En ese caso, cree una macro o VBA un procedimiento y, después, establezca la propiedad de evento del botón de OnClick comando para que el botón de comando ejecute la macro o el procedimiento. Para realizar una operación sencilla, como abrir un informe, puede usar el Asistente para botones de comando para realizar el trabajo o puede desactivar el asistente y programarlo usted mismo.
Nota
Muchos programas de Microsoft Office usan el término "macro" para hacer referencia a VBA código. Esto puede confundir a los usuarios de Access porque, en Access, el término "macro" hace referencia a una colección con nombre de acciones de macro que se ensambla mediante el Generador de macros. Las acciones de macro de Access representan solo un subconjunto de los comandos disponibles en VBA. El Generador de macros le proporciona una interfaz más estructurada que el Editor de Visual Basic, por lo que puede agregar programación a controles y objetos sin código de aprendizaje VBA . En los artículos de la Ayuda de Access, las macros de Access se denominan macros.
VBA se denomina VBA código, función o procedimiento.
VBA el código se almacena en módulos de clase, que forman parte de formularios o informes individuales y normalmente contienen código solo para esos objetos, y en módulos, que no están vinculados a objetos específicos y suelen contener código global que se puede usar en toda la base de datos.
Objetos como formularios e informes, y controles como botones de comando y cuadros de texto, tienen propiedades de evento a las que puede adjuntar macros o procedimientos. Cada propiedad de evento está asociada a un evento específico, como hacer clic con el mouse, abrir un formulario o cambiar datos en un cuadro de texto. Los eventos también pueden desencadenarse por factores externos a Access, como eventos del sistema, o macros o procedimientos que se adjuntan a otros eventos. La base de datos puede resultar compleja si agrega muchas macros o procedimientos a muchas propiedades de evento en muchos objetos. En la mayoría de los casos, sin embargo, puede obtener los resultados que desea usando muy poca programación.
¿Debo usar macros o código de VBA?
La decisión de usar macros, VBAo ambas, depende principalmente de cómo planea implementar o distribuir la base de datos. Por ejemplo, si la base de datos está almacenada en el equipo, usted es el único usuario y está cómodo usando VBA código, puede decidir usarlo VBA para la mayoría de las tareas de programación. Sin embargo, si planea compartir la base de datos con otras personas desde un servidor de archivos, es posible que desee evitar usarla VBA debido a problemas de seguridad.
Base su decisión de usar macros o VBA código en dos cuestiones: la seguridad y la funcionalidad que desea. La seguridad es importante porque VBA se puede usar para crear código que ponga en peligro tus datos o dañe los archivos del equipo. Cuando use una base de datos que haya creado otra persona, habilite VBA el código solo si sabe que la base de datos procede de una fuente de confianza. Al crear una base de datos que usarán otras personas, intente evitar incluir herramientas de programación que requieran que el usuario confíe explícitamente en la base de datos. Las técnicas generales para evitar este requisito aparecen más adelante en esta sección.
Para ayudar a proteger la base de datos, intente usar macros cuando sea posible y VBA solo para operaciones que no se puedan realizar con acciones de macro. Además, intente usar solo acciones de macro que no requieran que la base de datos sea de confianza para poder ejecutarse. Limitar las acciones de macro de esta forma ayuda a los usuarios a sentirse seguros de que la base de datos no tiene ninguna programación que pueda dañar los datos u otros archivos de sus equipos.
Consideraciones de las macros
Access contiene muchas acciones de macro que le permiten crear macros más eficaces que las versiones anteriores de Access permitidas. Por ejemplo, ahora puede crear y usar variables temporales globales con acciones de macro y puede controlar los errores con más precisión mediante las nuevas acciones de macro de control de errores. En versiones anteriores de Access, estas características solo estaban disponibles en VBA. También puede insertar una macro directamente en la propiedad de evento de un objeto o control. Una macro incrustada pasa a formar parte del objeto o control y permanece con él si el objeto o control se mueve o se copia.
Las macros resultan una forma sencilla de administrar muchas tareas de programación, como abrir y cerrar formularios y elaborar informes. Puede vincular rápidamente los objetos de base de datos, como formularios e informes, que ha creado porque no hay mucha sintaxis que recordar. Los argumentos de cada acción se muestran en el Generador de macros.
Además del aumento de la seguridad y de la facilidad de uso que proporcionan las macros, debe usar macros para realizar las siguientes tareas:
Asignar una acción o conjunto de acciones a una clave. Para ello, es necesario crear un grupo de macros denominado
AutoKeys.Realizar una acción o una serie de acciones cuando se abre por primera vez una base de datos. Para ello, es necesario crear una macro con el nombre
AutoExec.Nota
La
AutoExecmacro se ejecuta antes que cualquier otra macro oVBAcódigo, incluso si designó un formulario de inicio en el cuadro de diálogo Opciones de Access y adjuntó una macro oVBAun código al formularioOnOpenoOnLoadevento.
Para obtener más información sobre cómo crear macros, vea Comprender las macros.
Consideraciones de VBA
Use VBA en lugar de macros si desea realizar cualquiera de las siguientes acciones:
- Use funciones integradas o cree las suyas propias. Access incluye muchas funciones integradas, como
IPmt, que calcula un pago de intereses. Puede usar estas funciones para realizar cálculos sin crear expresiones complicadas.VBAMediante , también puede crear sus propias funciones para realizar cálculos que vayan más allá de la capacidad de una expresión o para reemplazar expresiones complejas. Además, puede usar las funciones que cree en expresiones para aplicar una operación común a más de un objeto. - Crear o manipular objetos. En la mayoría de los casos, es más fácil crear y modificar un objeto en la vista Diseño de ese objeto. En algunas situaciones, sin embargo, es posible que desee manipular la definición de un objeto en el código. Al usar
VBA, puede manipular todos los objetos de una base de datos, así como la propia base de datos. - Realizar acciones de nivel del sistema. Puede realizar la
RunAppacción en una macro para ejecutar otro programa, como Microsoft Excel, desde Access, pero no puede usar una macro para hacer mucho más fuera de Access.VBACon , puede comprobar si existe un archivo en el equipo, usar Automatización o Intercambio dinámico de datos (DDE) para comunicarse con otros programas basados en Microsoft Windows, como Excel, y llamar a funciones de bibliotecas de vínculos dinámicos de Windows (DLLs). - Manipular registros de uno en uno. Puede usar
VBAesta opción para recorrer un conjunto de registros de uno en uno y realizar una operación en cada registro. Por el contrario, las macros funcionan con conjuntos completos de registros a la vez.
Usar el Asistente para botones de comando para realizar tareas comunes de programación
Si va a agregar un botón de comando a un formulario, el Asistente para botones de comando puede ayudarle a empezar a programar. El asistente le ayuda a crear un botón de comando que realiza una tarea específica. En un archivo de Access (.accdb), el asistente crea una macro incrustada en la OnClick propiedad del botón de comando. En un .mdb archivo o .adp , el asistente crea VBA código porque las macros incrustadas no están disponibles en esos formatos de archivo. En cualquier caso, puede modificar o mejorar la macro o VBA el código para adaptarla mejor a sus necesidades.
En el panel de navegación, haga clic con el botón derecho en el formulario en el que quiera agregar el botón de comando y, a continuación, haga clic en Vista Diseño.
En la pestaña Diseño de formulario , haga clic en la flecha abajo para mostrar la galería Controles y, después, asegúrese de que usar asistentes para controles está seleccionado.
En la pestaña Diseño de formulario , en la galería Controles , haga clic en Botón.
En la cuadrícula de diseño del formulario, haga clic donde desee colocar el botón de comando. Se iniciará el Asistente para botones de comando.
En la primera página del asistente, haga clic en cada categoría de la lista Categorías para ver las acciones que puede programar el asistente para que las realice en el botón de comando. En la lista Acciones, seleccione la acción que desea y, a continuación, haga clic en Siguiente.
Haga clic en la opción Texto o en la opción Imagen, según si desea que se muestre texto o una imagen en el botón de comando.
- Si desea mostrar texto, puede editar el texto en el cuadro junto a la opción Texto.
- Si desea mostrar una imagen, el asistente le sugerirá una imagen de la lista. Si desea seleccionar otra imagen, seleccione la casilla de verificación Mostrar todas las imágenes para mostrar una lista de todas las imágenes de botón de comando disponibles en Access o haga clic en Examinar para seleccionar una imagen almacenada en otro lugar. Haga clic en Siguiente.
Escriba un nombre significativo para el botón de comando. Este paso es opcional y este nombre no se muestra en el botón de comando. Sin embargo, es una buena idea escribir un nombre significativo para que, cuando necesite hacer referencia al botón de comando posteriormente, por ejemplo, al establecer el orden de tabulación de los controles del formulario, sea mucho más fácil distinguir los botones de comando. Si el botón de comando cierra el formulario, por ejemplo, podría asignarle
cmdCloseun nombre oCommandClose.Haga clic en Finalizar. Access coloca el botón de comando en el formulario.
Si desea ver lo que programó el asistente, siga estos pasos opcionales:
Si aún no se muestra la hoja de propiedades, presione F4 para mostrarla.
En la hoja de propiedades, haga clic en la pestaña Eventos.
En el cuadro de la propiedad Al hacer clic , haga clic en el botón Generar .
Access inicia el Generador de macros y muestra la macro que creó el asistente. Puede editar la macro si lo desea. Para obtener más información, vea Comprender las macros. Cuando haya terminado, en la pestaña Diseño de macros , en el grupo Cerrar , haga clic en Cerrar para cerrar el Generador de macros. Si Access le pide que guarde los cambios y actualice la propiedad, haga clic en Sí para guardar los cambios o en No para rechazarlos.
En la pestaña Diseño de formulario , en el grupo Vistas , haga clic en Ver y, a continuación, haga clic en Vista Formulario. Haga clic en el nuevo botón de comando para confirmar que funciona correctamente.
Obtener información sobre macros
Una macro es una herramienta que le permite automatizar tareas y agregar funcionalidad a los formularios, informes y controles. Por ejemplo, si agrega un botón de comando a un formulario, puede asociar la propiedad de evento del OnClick botón a una macro que contenga los comandos que desea que ejecute el botón cada vez que se seleccione.
Resulta útil considerar las macros de Access como lenguaje de programación simplificado con el que puede crear código mediante la generación de una lista de acciones a realizar. Al crear una macro, seleccione todas las acciones de una lista desplegable y, después, rellene la información necesaria para cada acción. Las macros le permiten agregar funcionalidad a formularios, informes y controles sin escribir código en un VBA módulo. Las macros proporcionan un subconjunto de los comandos disponibles en VBAy a la mayoría de los usuarios les resulta más fácil crear una macro que escribir VBA código.
Las macros se crean con el Generador de macros, que se muestra en la siguiente ilustración.
Para mostrar el Generador de macros:
- En el grupo Macros y código de la pestaña Crear, haga clic en Macro.
Obtener información sobre código de VBA
Al igual que las macros, VBA le permite agregar automatización y otras funciones a la aplicación de Access. Puede ampliar VBA mediante controles de terceros y escribir sus propias funciones y procedimientos para necesidades específicas.
Una forma rápida de empezar VBA es crear primero una macro de Access y, a continuación, convertirla en VBA código. Las instrucciones para hacerlo se incluyen en Convertir macros en código de VBA. Esta característica crea un nuevo VBA módulo que realiza las operaciones equivalentes en la macro. También abre el Editor de Visual Basic para que pueda comenzar a modificar el procedimiento. Cuando trabaje en el Editor de Visual Basic, puede hacer clic en palabras clave y presionar F1 para iniciar la Ayuda para desarrolladores de Access y obtener más información sobre cada palabra clave. A continuación, puede explorar la ayuda para desarrolladores de Access y descubrir nuevos comandos que le ayudarán a realizar las tareas de programación que desee.
Convertir macros en código de VBA
Puede usar Access para convertir automáticamente macros en VBA módulos o módulos de clase. Puede convertir las macros adjuntas a un formulario o un informe, tanto si son objetos independientes como macros incrustadas. También puede convertir macros globales que no estén adjuntas a un formulario o informe específico.
Convertir macros adjuntas a un formulario o informe
Este proceso se convierte en VBA cualquier macro a la que se haga referencia o que esté incrustada en un formulario o informe, o en cualquiera de sus controles, y agrega el VBA código al módulo de clase del formulario o informe. El módulo de clase pasa a formar parte del formulario o del informe y se desplaza con él cuando se mueve o se copia.
En el panel de navegación, haga clic con el botón secundario en el formulario o informe y, a continuación, haga clic en Vista Diseño.
En la pestaña Diseño de formulario , en el grupo Herramientas , haga clic en Convertir macros del formulario en Visual Basic o convertir las macros del informe en Visual Basic.
En los cuadros de diálogo Convertir macros de formulario o Convertir macros de informe , seleccione si desea que Access agregue código de control de errores a las funciones que genera. Si las macros incluyen comentarios, seleccione también si desea que esos comentarios se incluyan en las funciones. Haga clic en Convertir para continuar. Si no existe ningún módulo de clase para el formulario o el informe, Access crea uno y agrega un procedimiento en el módulo para cada macro asociada al formulario o al informe. Access también cambia las propiedades de evento del formulario o informe para que ejecuten los nuevos
VBAprocedimientos en lugar de las macros.Para ver y editar el
VBAcódigo:Mientras el formulario o informe sigue abierto en la vista Diseño, si aún no se muestra la hoja de propiedades, presione F4 para mostrarla.
En la pestaña Evento de la hoja de propiedades, haga clic en cualquier cuadro de propiedades que muestre
[Event Procedure]y, a continuación, haga clic en el botón Generar . Para ver las propiedades de evento de un control específico, haga clic en el control para seleccionarlo. Para ver las propiedades de evento de todo el formulario o informe, seleccione Formulario o Informe en la lista desplegable que se encuentra en la parte superior de la hoja de propiedades.
Access abre el Editor de Visual Basic y muestra el procedimiento de evento en su módulo de clase. Puede desplazarse hacia arriba o hacia abajo para ver otros procedimientos que se encuentran en el mismo módulo de clase.
Convertir macros globales
En el panel de navegación, haga clic con el botón derecho en la macro que desee convertir y, a continuación, haga clic en Vista Diseño.
En la pestaña Diseño de macros , en el grupo Herramientas , haga clic en Convertir macros en Visual Basic.
En el cuadro de diálogo Convertir Macro, seleccione las opciones que desee y, a continuación, haga clic en Convertir. Access convierte la macro y abre el Editor de Visual Basic.
Para ver y editar el
VBAcódigo:- En el Editor de Visual Basic, si no se muestra el panel Explorador de proyectos, en el menú Ver, haga clic en Explorador de proyectos.
- Expanda el árbol que se encuentra bajo el nombre de la base de datos en la que está trabajando.
- En Módulos, haga doble clic en el
Converted Macro-<macro name>módulo. El Editor de Visual Basic abrirá el módulo.
Adjuntar una función de VBA a una propiedad de evento
Al convertir una macro global en VBA, el VBA código se coloca en un módulo estándar. A diferencia de un módulo de clase, un módulo estándar no forma parte de un formulario ni de un informe. Es probable que desee asociar la función a una propiedad de evento de un formulario, informe o control para que el código se ejecute exactamente cuando y donde quiera. Para ello, puede copiar el VBA código en un módulo de clase y asociarlo a una propiedad de evento, o puede realizar una llamada especial desde la propiedad de evento al módulo estándar mediante el procedimiento siguiente.
- En el Editor de Visual Basic, anote el nombre de función. Por ejemplo, si ha convertido una macro denominada
MyMacro, el nombre de la función seráMyMacro(). - Cierre el Editor de Visual Basic.
- En el panel de navegación, haga clic con el botón secundario en el formulario o informe al que desea asociar la función y, a continuación, haga clic en Vista Diseño.
- Haga clic en el control o en la sección a los que desea asociar la función.
- Si aún no se muestra la hoja de propiedades, presione F4 para mostrarla.
- En la pestaña Eventos de la hoja de propiedades, haga clic en el cuadro de propiedad de evento al que desea asociar la función.
- En el cuadro de propiedad, escriba un signo igual (
=) seguido del nombre de la función, por ejemplo,=MyMacro(). Asegúrese de incluir los paréntesis. - Para guardar el formulario o el informe, haga clic en Guardar en la Barra de herramientas de acceso rápido.
- En el panel de navegación, haga doble clic en el formulario o el informe y pruébelo para asegurarse de que el código se ejecuta correctamente.
Ahora ya conoce los pasos básicos para agregar VBA código a la base de datos. En este artículo se describen solo los conceptos básicos de cómo empezar. Muchos libros de referencia y recursos en línea excelentes pueden ayudarle a desarrollar sus habilidades de programación.
Vea también
Creación de una macro de interfaz de usuario (UI)
Ejecutar una macro de Access mediante un método abreviado de teclado
Eventos de inicio automático con una macro
Crear una macro que se ejecute al abrir una base de datos