Cuando crea una base de datos, normalmente empieza creando varios objetos de base de datos, como tablas, formularios e informes. Finalmente, llega a un punto en el que tiene que agregar algo de programación para automatizar algunos procesos y vincular los objetos de la base de datos. Este artículo le orientará hacia las herramientas de programación de Access.
En este artículo
¿Qué es la programación
En Access, la programación es el proceso de agregar funcionalidad a la base de datos mediante macros de Access o código de Visual Basic para Aplicaciones (VBA). Por ejemplo, supongamos que ha creado un formulario y un informe y desea agregar un botón de comando al formulario para que, al hacer clic, se abra el informe. En este caso, la programación es el proceso de creación de una macro o un procedimiento de VBA y de configuración de la propiedad de evento OnClick del botón de comando para que al hacer clic en el botón de comando se ejecute la macro o el procedimiento. Para una operación sencilla, como abrir un informe, puede usar el Asistente para botones de comando para que haga todo el trabajo o puede desactivar el asistente y hacer la programación usted mismo.
Nota: Muchos programas de Microsoft Office utilizan el término “macro” para hacer referencia a un código de VBA. Esto puede resultar confuso para Access usuarios porque, en Access, el término "macro" hace referencia a una colección con nombre de acciones de macro que puede ensamblar mediante el Generador de macros. Access acciones de macro representan solo un subconjunto de los comandos disponibles en VBA. El Generador de macros le ofrece una interfaz más estructurada que el Editor de Visual Basic, lo que le permite agregar programación a los controles y objetos sin tener que aprender código de VBA. Recuerde que en Access artículos de ayuda, Access macros se denominan macros. Por el contrario, el código de VBA se denomina VBA, código, función o procedimiento. El código de VBA está integrado en módulos de clase (que forman parte de formularios o informes individuales y suelen contener 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 puede usarse en toda la base de datos).
Los objetos, como formularios e informes, y los controles, como botones de comando y cuadros de texto, tienen diferentes 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 modificar 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 asociados a otros eventos. Su base de datos puede ser compleja si agrega muchas macros o procedimientos para varias propiedades de evento de muchos objetos, pero, en la mayoría de los casos, puede obtener los resultados que desea con muy poca programación.
¿Debo usar macros o código de VBA?
La decisión de usar macros, VBA o ambos depende principalmente de cómo tiene previsto implementar o distribuir la base de datos. Por ejemplo, si la base de datos se almacena en el equipo, usted es el único usuario y está familiarizado con el código de VBA, puede usar VBA para realizar la mayoría de las tareas de programación. Sin embargo, si desea compartir la base de datos con otras personas en un servidor de archivos, es recomendable evitar el uso de VBA por motivos de seguridad.
Debe basar su decisión de usar macros o código de VBA en dos cuestiones: la seguridad y la funcionalidad que desea. La seguridad es importante porque VBA puede usarse para crear código que pone en peligro la seguridad de sus datos o que puede dañar archivos de su equipo. Si usa una base de datos creada por otra persona, debe habilitar el código de VBA solo si sabe que la base de datos procede de una fuente de confianza. Al crear una base de datos que usarán otros usuarios, intente evitar incluir herramientas de programación que necesitan específicamente conceder un estado de confianza a la base de datos. Las técnicas generales para evitar que los usuarios necesiten confiar en la base de datos se incluyen más adelante en esta sección.
Para ayudar a garantizar la seguridad de la base de datos, intente usar macros cuando sea posible y programación de VBA solo para las operaciones que no se puedan realizar mediante el uso de acciones de macro. Además, intente usar solo las acciones de macro para las que no sea necesario conceder el estado de confianza a la base de datos para poder ejecutarlas. Al limitar el uso de acciones de macro de esta manera, permite que los usuarios confíen en que la base de datos no tiene ninguna programación que podría dañar los datos u otros archivos de sus equipos.
Consideraciones de las macros
Access contiene muchas acciones de macro nuevas que le permiten crear macros más eficaces de las que puede crear usando 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, estos tipos de características solo están disponibles con VBA. Asimismo, puede incrustar una macro directamente en la propiedad de evento de un objeto o de un control. Una macro incrustada pasa a formar parte del objeto o del control y permanece unida a él cuando 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 unir de forma rápida y fácil los objetos de la base de datos (formularios, informes, etc.) que ha creado porque no es necesario utilizar mucha sintaxis. 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 denominada AutoExec.
Nota: La macro AutoExec se ejecuta antes que las demás macros o que el código de VBA, incluso si ha designado un formulario de inicio en el cuadro de diálogo Opciones de Access y ha adjuntado una macro o código de VBA al evento OnOpen o al evento OnLoad de ese formulario.
Para obtener más información sobre cómo crear macros, vea la sección Obtener información sobre macros.
Consideraciones de VBA
Debe usar la programación de VBA en lugar de macros para realizar uno de estos procedimientos:
-
Use funciones integradas o cree sus propias funciones Access incluye muchas funciones integradas, como la función IPmt , que calcula un pago de intereses. Puede usar estas funciones integradas para realizar cálculos sin tener que crear expresiones complejas. Al usar código de VBA, también puede crear sus propias funciones para realizar cálculos que superen 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, le resultará más fácil crear y modificar un objeto en la vista Diseño de ese objeto. Sin embargo, en algunas situaciones es recomendable manipular la definición de un objeto en el código. Si usa VBA, puede manipular todos los objetos de una base de datos, además de la propia base de datos.
-
Realizar acciones de nivel de sistema Puede llevar a cabo la acción EjecutarAplicación en una macro para ejecutar otro programa (por ejemplo, Microsoft Excel) desde Access, pero no puede usar una macro para hacer mucho más fuera de Access. Si usa VBA, puede comprobar si existe un archivo en el equipo, usar Automation 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 (DLL) de Windows.
-
Manipular registros uno a uno Puede usar VBA para desplazarse por un conjunto de registros, de uno en uno, y realizar una operación en cada registro. En cambio, las macros trabajan con conjuntos de registros completos cada 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 propiedad OnClick del botón de comando. En un archivo .mdb o .adp, el asistente crea un código de VBA, porque las macros incrustadas no están disponibles para esos formatos de archivo. En cualquier caso, puede modificar o mejorar la macro o el código de VBA para satisfacer mejor 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 asegúrese de que la opción Usar asistentes para controles 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 una imagen diferente, active la casilla Mostrar todas las imágenes para mostrar una lista de todas las imágenes del botón de comando que Access proporciona, 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 buena idea escribir un nombre significativo para que, cuando necesite hacer referencia al botón de comando posteriormente (por ejemplo, si va a establecer el orden de tabulación de los controles del formulario), sea mucho más fácil distinguir los diferentes botones de comando. Si el botón de comando cierra el formulario, por ejemplo, podría llamarlo cmdCerrar o ComandoCerrar.
-
Haga clic en Finalizar.
Access coloca el botón de comando en el formulario.
-
Si desea ver qué ha “programado” el asistente, siga estos pasos opcionales:
-
Si 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 sobre cómo editar una macro, vea la sección Comprender 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 permite automatizar tareas y agregar funcionalidad a los formularios, informes y controles. Por ejemplo, si agrega un botón de comando a un formulario, asocia la propiedad de evento OnClick del botón a una macro que contiene los comandos que desea que se lleven a cabo cada vez que haga clic en el botón.
Resulta útil pensar en Access macros como un lenguaje de programación simplificado en el que se crea código mediante la creación de una lista de acciones que 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 módulo de VBA. Las macros proporcionan un subconjunto de los comandos disponibles en VBA y a muchas personas les resulta más fácil crear una macro que escribir código de VBA.
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 puede escribir sus propias funciones y procedimientos para satisfacer sus necesidades.
Una forma rápida de empezar con la programación de VBA es crear primero una macro de Access y, después, convertirla en código vba. Las instrucciones para realizar esta tarea se incluyen en la sección Convertir macros a código de VBA. Esta característica crea un nuevo módulo de VBA que ejecutará 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 Access Ayuda para desarrolladores y obtener más información sobre cada palabra clave. A continuación, puede explorar Access Ayuda para desarrolladores 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 de VBA 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 las macros globales que no están adjuntas a un formulario o informe específicos.
Convertir macros adjuntas a un formulario o informe
Este proceso convierte a VBA cualquier macro a la que se haga referencia o que esté incrustada en un formulario o informe, o en cualquiera de los controles, y agrega el código de VBA al módulo de clase del informe o del formulario. 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.
-
Haga clic con el botón derecho en el formulario o informe en el panel de navegación y, luego, 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. Además, si sus macros tienen comentarios, seleccione si desea que se incluyan como comentarios en las funciones. Haga clic en Convertir para continuar.
Si no existe ningún módulo de clase para el formulario o informe, Access crea uno y agrega un procedimiento al módulo para cada macro asociada con el formulario o informe. Access también cambia las propiedades de evento del formulario o informe para que ejecuten los nuevos procedimientos de VBA en lugar de las macros.
-
Para ver y editar el código de VBA:
-
Con el formulario o el informe abiertos en la vista Diseño, si 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 [Procedimiento de evento] 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 código de VBA:
-
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 módulo Convertir Macro - seguido del nombre de la macro.
El Editor de Visual Basic abrirá el módulo.
-
Adjuntar una función de VBA a una propiedad de evento
Cuando convierte una macro global en VBA, el código de VBA 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 código de VBA en un módulo de clase y asociarlo a una propiedad de evento o puede hacer una llamada especial desde la propiedad de evento al módulo estándar mediante siguiente el procedimiento.
-
En el Editor de Visual Basic, anote el nombre de función. Por ejemplo, si ha convertido una macro denominada MiMacro, el nombre de la función será MiMacro().
-
Cierre el Editor de Visual Basic.
-
En el panel de navegación, haga clic con el botón derecho en el formulario o el informe al que desea asociar la función y, después, 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 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, =MiMacro(). 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 conoce los pasos básicos para agregar código VBA a la base de datos. En este artículo se describen solo los conceptos básicos de cómo empezar; hay muchos libros de referencia y recursos en línea excelentes que 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