Alquimia Excel: Generar hojas a partir de una base de Datos
Por Fabian Torres Hoy en Alquimia Excel la sección dedicada a resolver dudas de los usuarios, hemos recibido la siguiente pregunta: “Tengo una base de datos en la que en la primera celda de filas se repite el mismo título (hacia abajo), deseo crear automáticamente tantas hojas con el nombre de estos títulos como tenga y que me traiga los datos de las celdas adyacentes (Toda la Fila). Jaime Agradecemos a todos nuestros lectores por enviar sus problemas al correo [email protected] Para dar solución a la pregunta de Jaime, utilizaremos la siguiente base de datos a modo de ejemplo |
La Table muestra los artículos vendidos por los asesores de una sucursal de una tienda de ropa masculina, como se observa, se encuentra el nombre del vendedor, el artículo vendido, la fecha de la venta, la descripción del producto y el código y referencia asociada al vendedor. Se quiere crear hojas individuales dentro del libro para cada fila de la base de datos de manera automática, sabiendo esto construiremos una Macro. El primer paso es abrir el editor de Visual Basic presionando la combinación de Teclas Alt +F11 Luego de abrir el editor, seleccionamos la hoja 1 (donde se encuentre la base de datos) y abrimos la ventana de propiedades para cambiar el nombre interno de la hoja. Aquí nos dirigimos a la Propiedad Name presionamos doble clic y le asignamos un nombre descriptivo a la hoja, para este caso WKSBaseDatos. Seguido de esta acción, procedemos a escribir en el módulo de la hoja las siguientes líneas de Código: Option Explicit Public Sub CrearHojasConFila() Dim WKSCrearHoja As Worksheet Dim X As Integer X = 1 Do While WKSBaseDatos.Range("A" & X).Value <> "" Set WKSCrearHoja = Worksheets.Add WKSBaseDatos.Range("A" & X & ":" & "XFD" & X).Copy Destination:=WKSCrearHoja.Range("A1") X = X + 1 Loop End Sub Explicación del código: Option Explicit Public Sub CrearHojasConFila() -> Procedimiento Publico Dim WKSCrearHoja As Worksheet -> Declaración de una variable que almacenará un objeto Dim X As Integer -> Declaración de una variable de tipo entero que servirá como contador X = 1 -> Iniciamos el contador en 1 Do While WKSBaseDatos.Range("A" & X).Value <> "" -> Crearemos un Bucle de tipo Do While que tiene como objetivo repetir este procedimiento hasta que se acaben las filas con valores en la base de datos. Set WKSCrearHoja = Worksheets.Add -> nuestra variable de tipo objeto creara una hoja nueva cada vez que se repita el ciclo WKSBaseDatos.Range ("A" & X & ":" & "XFD" & X). Copy Destination := WKSCrearHoja.Range("A1") -> Copia la primera fila de la base de datos y se pega en la hoja nueva que se creó en la línea de código inmediatamente anterior X = X + 1 -> Para cambiar de fila y repetir el proceso sumamos 1 al contador Loop -> Cerramos el bucle End Sub -> Terminamos el procedimiento Así se ve el codigo en el editor de VBA Concluida la inserción del codigo, lo ejecutamos Para finalizar solo basta con verificar que la macro halla sido ejecutada correctamente, en la siguiente imagen se ve como las hojas fuerón creadas: La lógica utilizada para crear esta macro se muestra a continuación: Son unas líneas de código bastante sencillas, pero si estas inciando en el Mundo VBA son ejemplos báscios e ideale que nos ayudaran poco a poco a relizar actividades de mayor complejidad Espero que este post sea de agrado, los invito a que estudien la serie dedicada a MACROS donde encontraran todo lo relacionado a conceptos básicos e intermedios sobre macros y progrmación en Excel, los diferentes ciclos que existen entre otras temáticas. |
Hastal la próxima |