Cuando se crea una base de datos, normalmente se 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 de 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 significa agregar funcionalidad a la base de datos mediante macros de Access o código de Visual Basic para Aplicaciones (VBA). Por ejemplo, puede crear un formulario y un informe y, a continuación, agregar un botón de comando al formulario que abre el informe al seleccionarlo. En ese caso, se crea una macro o VBA un procedimiento y, a continuación, se establece la propiedad de evento del botón de comando para que el botón de OnClick comando ejecute la macro o el procedimiento. Para 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 al VBA código. Esto puede confundir a los usuarios de Access porque, en Access, el término "macro" hace referencia a un conjunto de acciones de macro que se ensamblan 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 proporciona una interfaz más estructurada que el Editor de Visual Basic, por lo que puede agregar programación a controles y objetos sin necesidad de aprender VBA código. En los artículos de la Ayuda de Access, las macros de Access se denominan macros.
VBA El código 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, por lo general, contienen código solo para esos objetos, y en módulos, que no están vinculados a objetos específicos y generalmente contienen código global que 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 ratón, abrir un formulario o cambiar los datos de un cuadro de texto. Los eventos también se pueden desencadenar por factores externos a Access, como eventos del sistema, o por macros o procedimientos asociados a otros eventos. La base de datos puede volverse 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 utilizando muy poca programación.
¿Debo usar macros o código de VBA?
La decisión de usar macros, o ambas, VBAdepende principalmente de cómo planee implementar o distribuir la base de datos. Por ejemplo, si la base de datos está almacenada en su equipo, es el único usuario y se siente cómodo usando VBA el código, puede decidir usarlo VBA para la mayoría de las tareas de programación. Sin embargo, si tiene previsto compartir la base de datos con otras personas de un servidor de archivos, es posible que desee evitarlo debido VBA a problemas de seguridad.
Base su decisión de usar macros o VBA código en dos preocupaciones: la seguridad y la funcionalidad que desea. La seguridad es importante porque VBA se puede usar para crear código que comprometa sus datos o dañe los archivos de su computadora. Cuando utilice una base de datos creada por otra persona, habilite VBA el código solo si sabe que la base de datos procede de un origen de confianza. Cuando cree una base de datos que otras personas usarán, trate de 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 ese requisito aparecen más adelante en esta sección.
Para ayudar a proteger la base de datos, intente usar macros cuando pueda y úselas VBA solo para operaciones que no se pueden realizar mediante acciones de macro. Además, intente usar solo acciones de macro que no requieran que la base de datos sea de confianza antes de poder ejecutarse. Limitar las acciones de macro de esta forma ayuda a los usuarios a estar seguros de que la base de datos no tiene 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 generar macros más eficaces que las que permitían las versiones anteriores de Access. 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 incrustar una macro directamente en la propiedad de evento de un objeto o control. Una macro incrustada se convierte en parte del objeto o control y permanece con él si el objeto o control se mueve o copia.
Las macros resultan una forma sencilla de administrar muchas tareas de programación, como abrir y cerrar formularios y elaborar informes. Puede unir rápidamente los objetos de base de datos, como formularios e informes, que ha creado porque hay poca 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. Esto requiere la creación de un grupo de macros llamado
AutoKeys.Realizar una acción o una serie de acciones cuando se abre por primera vez una base de datos. Esto requiere la creación de una macro denominada
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 oVBAcódigo a eseOnOpenformulario oOnLoadevento.
Para obtener más información sobre cómo crear macros, consulte Descripción de macros.
Consideraciones de VBA
Use VBA en lugar de macros si desea realizar una 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. ConVBA, también puede crear sus propias funciones para realizar cálculos que van 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. Mediante
VBA, puede manipular todos los objetos de una base de datos, así como la propia base de datos. - Realizar acciones a nivel de sistema. Puede llevar a cabo la
RunAppacción de 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. MedianteVBA, puede comprobar si existe un archivo en el equipo, utilizar la automatización o el Intercambio dinámico de datos (DDE) para comunicarse con otros programas basados en Microsoft Windows, como Excel, y llamar a funciones en bibliotecas de vínculos dinámicos de Windows (DLLs). - Manipule los registros uno a la vez. Puede usarlo
VBApara recorrer un conjunto de registros un registro a la vez y realizar una operación en cada registro. En cambio, las macros funcionan con conjuntos enteros 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 que se inserta en la OnClick propiedad del botón de comando. En un .mdb archivo OR .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 que se adapte 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 de controles y asegúrese de que la opción Usar asistentes de control esté seleccionada.
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 más adelante, como 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, puede ponerle
cmdCloseun nombre oCommandClose.Haga clic en Finalizar. Access coloca el botón de comando en el formulario.
Si desea ver lo que el asistente programó para usted, 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 propiedad Al hacer clic , haga clic en el botón Crear .
Access inicia el Generador de macros y muestra la macro creada por el asistente. Puede editar la macro si quiere. Para obtener más información, consulte Descripción de 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 Vista y, después, 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 permite automatizar tareas y agregar funcionalidad a 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 con una macro que contenga los comandos que desea que realice 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 que están disponibles en VBAy a la mayoría de las personas 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 funcionalidades a la aplicación de Access. Puede ampliar VBA mediante el uso de 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 VBA. Esta característica crea un nuevo VBA módulo que realiza las operaciones equivalentes de 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 las palabras clave y presionar F1 para iniciar Access a la Ayuda para desarrolladores 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 módulos o módulos de VBA 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 haga referencia un formulario o informe, o que esté incrustada en él, 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, después, haga clic en Vista Diseño.
En la pestaña Diseño de formulario , en el grupo Herramientas , haga clic en Convertir las macros del formulario en Visual Basic o en Convertir las macros del informe en Visual Basic.
En el cuadro 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 quiere 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 aparezca
[Event Procedure]y, a continuación, haga clic en el botón Crear . 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 a 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, a continuación, asociarlo a una propiedad de evento, o puede realizar una llamada especial desde la propiedad de evento al módulo estándar utilizando 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 propiedades, 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 solo se describen los conceptos básicos de cómo empezar. Muchos excelentes libros de referencia y recursos en línea pueden ayudarlo 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