jueves, 31 de diciembre de 2009

Como crear una macro

En esta nueva entrada vamos a tratar de explicar como realizar una macro que permita automatizar un conjunto de tareas en un solo clic. Después se podrá asociar la macro a un icono o a un botón.

Para poder escribir el código de la macro, en primer lugar, vamos al menú herramientas, seleccionamos macro y a continuación pinchamos en el editor de visual basic. Lo podemos ver en la siguiente imagen:


Mediante teclado podemos hacer lo mismo con Alt+F11. En dicho editor ahora vamos al menú Insertar y seleccionamos la opción Módulo como muestra la imagen:


A continuación aparece la ventana donde podremos teclear el código de la macro. Ahora en la ventana recién aparecida teclearemos la palabra reservada sub y después el nombre de la macro, finalizando dicha línea de código con un abrir y un cerrar paréntesis. En la siguiente imagen el nombre que hemos dado a la macro es mimacro. Después de teclear los paréntesis pulsamos la tecla intro y se genera, de forma automática, una línea en blanco y el texto end sub:
A partir de ahora ya estamos en disposición de teclear el código que nos interese que ejecute está macro. Importante, todo el código debe ser introducido en la línea en blanco, la que tiene el cursor. Podemos introducir desde una sola acción hasta lo que estimemos oportuno, por largo que sea.
El módulo que hemos insertado lo podemos ver en la ventana denominada Explorador de proyectos. Aparece como módulo1 debajo de la carpeta módulos que cuelga de VBAProject(Libro1). La siguiente imagen lo muestra:
Una vez introducido todo el código que nos interesa podemos pulsar en el botón guardar (icono con la imagen de un disquete) y solo nos resta salir del Editor de Visual Basic. Pulsaremos en el botón de cerrar la ventana.
Para ejecutar la macro podemos hacerlo de varias formas (imagen, botón de comando...), pero es tema para otras entradas posteriores a esta.
!Feliz Año 2010 a todos!

miércoles, 30 de diciembre de 2009

Funciones útiles en Access: IZQ y DER

En Access, a parte de trabajar con los distintos objetos que tiene, también lo podemos complementar, haciendo la aplicación mas completa, utilizando las distintas funciones internas que tiene. En esta entrada nos vamos a detener en dos: izq y der.

En primer lugar, a modo de introducción, comentaremos que para insertar una función cualquiera en un formulario o informe, usaremos un cuadro de texto. En el mismo, o dentro de sus propiedades (doble clic sobre el cuadro de texto), seleccionaremos la propiedad origen de control donde, para colocar una función escribiremos en primer lugar el signo =, y después se teclea la función con sus correspondientes argumentos.

En el caso de izq, necesitaremos dos argumentos. Dicha función devuelve los n primeros caracteres del contenido de un campo o de una cadena de texto. El primer argumento debe decirnos a que campo se refiere la función, de donde va a obtener los caracteres, y el segundo nos marcará cuantos caracteres del comienzo del campo nos va a interesar. Veámoslo con un ejemplo:

Si queremos obtener los dos primeros caracteres del nombre de cada cliente de una base de datos con la tabla clientes, y que esta, a su vez, contiene el campo NombreCliente, teclearemos en un cuadro de texto que lo represente lo siguiente:

=izq([Nombrecliente];2)

Si queremos que nos devuelva el primer carácter entonces el segundo argumento será 1.

Con la función der ocurre exactamente lo mismo, con la diferencia que los caracteres que devuelve son los últimos del contenido del campo marcado en el primer argumento. Por tanto:

=der([Nombrecliente];3)

En este caso nos devolverá los últimos 3 caracteres de los nombres de los clientes.

Una utilidad interesante de la función izq es crear un índice alfabético de productos o de clientes, haciendo que la función nos devuelva el primer carácter para que nos sirva de título de cada letra del alfabeto.

Actualizar tablas en Excel

En el siguiente ejercicio vamos a ver como actualizar tablas en excel. Nos centraremos en modificar unos precios con código VBA. Modificare...