| Artículos | 01 ABR 2005

Cómo hacer formularios con Word de forma fácil

Tags: Histórico
Rodolfo de Benito.
En determinados documentos sería muy útil disponer de un asistente que, a partir de un modelo, solicitara los datos precisos para rellenarlo insertando en él los textos e imágenes necesarios. precisamente Éste será nuestro objetivo en esta primera entrega, donde le ofrecemos unos trucos orientados a crear un asistente basado en un formulario de visual basic para insertar y programar sus controles. El mes que viene veremos cómo vincular los datos del asistente con el documento y cómo interceptar algunos eventos de word. Cómo crear un formulario VBA y añadirle el control Página múltiple El asistente que le proponemos se encargará de solicitar unos datos para rellenar una ficha de control de calidad de materiales de construcción. Tendrá sólo dos pasos, en el primero se requerirán los datos de la obra donde se realizará la inspección y en el segundo se pedirá el nombre del responsable de calidad e incluiremos una fotografía de él. Empecemos por diseñar el formulario de usuario que hará las veces de asistente: 1. Pulse la combinación de teclas ALT+F11 para acceder al Editor de Visual Basic. 2. Seleccione en el menú del Editor » Insertar UserForm. 3. En la ventana Propiedades (pulse F4 si esta ventana está oculta) borre el contenido de la propiedad Caption y teclee el nombre del formulario, por ejemplo, Asistente para fichas de calidad. Modifique también la propiedad Name tecleando Asistente. 4. Adapte las dimensiones del formulario a su gusto y en previsión de su contenido, por ejemplo, aumente las dimensiones unos tres centímetros en sentido vertical y horizontal. Ahora que hemos creado el formulario le iremos añadiendo controles. Estos se encuentran en el Cuadro de herramientas, localícelo en pantalla (seleccione Ver » Cuadro de herramientas en caso necesario). Para simular los pasos del asistente utilizaremos el control Página múltiple, ya que se comporta de forma similar a las fichas o páginas de un cuadro de diálogo y haremos que cada página se corresponda con un paso del asistente. Inserte este control en el formulario de tal manera que ocupe la mayor parte del mismo, dejando una zona libre para los botones en la parte inferior. Observe que Página múltiple dispone por defecto de dos páginas: Page1 y Page2; utilice la ventana Propiedades y la propiedad Caption para sustituir estos nombres por los de Paso 1: Datos de la obra y Paso 2: Responsable de la obra, respectivamente. Insertar controles tipo Etiqueta, Cuadro de texto e Imagen Ahora hay que insertar los controles necesarios en cada una de las páginas. La primera (primer paso del asistente) se utilizará para teclear los datos sobre la situación de la obra: nombre de la obra, dirección, ciudad, código postal y provincia. Para capturar estos datos emplearemos el control Cuadro de texto que irá acompañado del control Etiqueta, donde figurará el nombre del dato requerido, por ejemplo, la etiqueta Nombre de la obra acompañará al cuadro de texto utilizado para teclear este dato. Pulse en la primera página del formulario (la que corresponde al paso 1) y utilizando la Caja de herramientas inserte estos pares de controles para todos los datos requeridos, exceptuando la provincia. No se olvide de modificar la propiedad Caption de las etiquetas y de cambiar la propiedad Name de los cuadros de texto, asígneles uno acorde a su contenido. Para la provincia es más cómodo emplear el control Cuadro combinado que muestre una lista desplegable con los nombres de todas las provincias, inserte una etiqueta con el texto Provincia y a continuación un cuadro combinado. Más adelante, mediante programa, cargaremos el cuadro combinado. La Caja de herramientas dispone de otros controles, como por ejemplo Imagen. Adorne un poco el formulario insertando una imagen con algún motivo relacionado con la construcción. Para que la imagen aparezca tendrá que utilizar la propiedad Picture de este control y elegir el archivo con la imagen deseada. Aún faltan los controles del segundo paso del asistente, seleccione la página 2 haciendo clic sobre su solapa y observe que los controles de la página 1 desaparecen. Inserte en ella un cuadro combinado para mostrar los nombres de los responsables de control de calidad y acompáñelo de la etiqueta Nombre del responsable y un control Imagen donde se mostrará automáticamente la fotografía correspondiente al responsable. En el truco siguiente veremos cómo conseguirlo. Cómo asociar un cuadro combinado a una imagen Lo que pretendemos es que cuando se elija un nombre en la lista desplegable se visualice su fotografía. Empezaremos por asignar un nombre al cuadro combinado y otro a la imagen, utilice la propiedad Name y llámelos Responsable y Foto respectivamente. Para asociar la fotografía al nombre elegido en la lista desplegable emplearemos un método muy sencillo en el que asumiremos que cada archivo correspondiente a la fotografía coincide con el nombre y apellidos de la persona, por ejemplo, a la responsable Ana Astell Leal le corresponderá uno llamado ANA ASTELL LEAL.JPG. Sólo falta añadir las líneas de código para que nos hagan el trabajo: 1. Haga doble clic en el cuadro de lista que contendrá los nombres de los responsables y verá cómo el editor genera un procedimiento para tratar el evento Change de la lista desplegable. Este evento se activará cada vez que se haga una selección en este desplegable. 2. Entre las líneas Private Sub y End Sub teclee Foto.Picture = LoadPicture(camino + Responsables.Value + extension). De esta manera estamos modificando la propiedad Picture de la imagen Foto para que cargue el archivo cuyo nombre se indica en la opción seleccionada en la lista desplegable (Responsables.Value). No estaría de más comprobar que la fotografía existe antes de intentar cargarla. Le animamos a que añada las líneas de código necesarias. Observe que se utilizan las variables Camino y Extensión para independizar en mayor medida tanto la ubicación del archivo con la fotografía como la extensión del mismo, aunque para ello es necesario declarar ambas variables. Abra una línea por encima de Private Sub y teclee Dim camino, extension As String. Ahora ya están declaradas pero aún no hemos indicado la extensión y el camino, para ello utilizaremos el evento Initialize que se ?disparará? cada vez que se cree el formulario en tiempo de ejecución: 1. Realice un doble clic en una zona del formulario que no tenga controles,.Con ello conseguirá generar un procedimiento para tratar automáticamente el evento Asistente_Click(). 2. En lugar de Click nos interesa tratar Initialize; localice el nombre de este evento en la lista de la parte superior derecha de la ventana de código (Lista Procedimiento). Si lo ha hecho correctamente tendrá dos procedimientos, elimine las líneas de código correspondientes a Asistente_Click(). 3. Teclee el código necesario para dejar el procedimiento a Asistente_Initialize()como sigue: Private Sub Asistente_Initialize() ?Inicializa variables para las fotos camino = ?C:\Fotos\? extension = ?.jpg? End Sub En el truco siguiente veremos cómo cargar la lista desplegable con los nombres de los responsables de calidad. Cómo inicializar las listas desplegables Hasta el momento hemos añadido dos cuadros combinados, uno para la provincia y otro para seleccionar el nombre del responsable. El problema es que están vacíos y aún no disponen de datos que mostrar. Esta operación la realizaremos mediante programa aprovechando el evento Initialize del formulario, que ya hemos tratado en el truco anterior y ahora modificaremos. Si la ventana Código no está abierta pulse la tecla F7, localice el procedimiento Asistente_ Initialize() y añada las líneas necesarias para dejarlo como se indica a continuación: Private Sub Asistente_Initialize() ?Inicializa variables para las fotos camino = ?C:\Fotos\? extension = ?.jpg? ?Carga la lista de provincias With Provincias .AddItem (?Álava?) .AddItem (?Albacete?) .AddItem (?Alicante?) .AddItem (?Almería?) .AddItem (?Asturias?) .AddItem (?...?) .AddItem (?Zaragoza?) End With ?Carga la lista de responsables With Responsables .AddItem (?Ana Astell Leal?) .AddItem (?Carlos Calpes Sotillo?) .AddItem (?Pablo Mendoza Alero?) End With End Sub Cómo programar los botones de comando A nuestro asistente aún le faltan los botones para avanzar y retroceder pasos (recuerde que el asistente constará sólo de dos pasos) así como para finalizarlo. Utilice el cuadro de herramientas para insertar tres botones de comando en la parte inferior del formulario y modifique las propiedades Name y Caption para que muestren los textos: Anterior, Siguiente y Finalizar, respectivamente. Ahora añadiremos las líneas de código necesarias para tratar los botones Anterior y Siguiente. Para el primer botón tendremos que activar la página anterior del control MultiPage1. Esto se consigue manipulando su propiedad Value, que indica el número de página activa (empezando en cero) y teniendo en cuenta que si estamos en la primera página no se puede retroceder. Haga doble clic en el botón Anterior y escriba el código de este botón para el evento Click(): Private Sub Anterior_Click() With MultiPage1 If .Value > 0 Then .Pages(.Value - 1).Visible = True .Value = .Value - 1 .Pages(.Value + 1).Visible = False End If End With End Sub Observe que al pulsar el botón Anterior se hace visible la página anterior del asistente y se oculta la actual de tal forma que el formulario mostrará únicamente la página activa en cada momento; si estamos en el Paso 2 se ocultará para mostrar el Paso 1. Para lograr este efecto es necesario también añadir unas líneas al procedimiento Asistente_ Initialize() para que oculte todas las páginas menos la primera. Localícelo y añada lo siguiente: ?Esconde páginas excepto la primera Dim i As Integer For i=1 To MultiPage1.Pages.Count - 1 MultiPage1.Pages(i).Visible = False Next i Programe ahora el botón Siguiente añadiendo estas líneas al procedimiento Siguiente_click(): With MultiPage1 If .Value < .Pages.Count - 1 Then .Pages(.Value + 1).Visible = True .Value = .Value + 1 .Pages(.Value - 1).Visible = False End If End With Por último programaremos el botón Finalizar aunque de momento sólo cerrará el formulario, quedando pendiente para la entrega del mes que viene la transferencia de datos desde el asistente hasta el documento de Word. Para cerrar el formulario al pulsar el botón Finalizar tendrá que teclear Asistente.Hide en el procedimiento Finalizar_click(). Cómo visualizar el formulario en el documento Sólo queda mostrar automáticamente el asistente cada vez que se abra el documento. Para esta tarea utilizaremos la macro AutoOpen, desde la que llamaremos al método Show del objeto Asistente: 1. Seleccione Insertar » Módulo en el menú del Editor de Visual Basic. 2. Teclee las líneas siguientes en el Editor: Sub AutoOpen() Asistente.Show End Sub Compruebe ahora que todo funciona, cierre el Editor de Visual Basic (Archivo » Cerrar y volver a Microsoft Word), guarde el documento con el nombre de Calidad y ciérrelo. Ábralo y compruebe que el asistente aparece automáticamente, verifique también el funcionamiento de los botones Anterior y Siguiente y compruebe que las páginas del formulario se ocultan y muestran adecuadamente. Para cerrar asistente pulse Finalizar.

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información