Macros Excel

Hola! Mi consulta es la siguiente, como hago a través de una macro en excel para que en un solo archivo de excel copiar diferentes bases de datos que se encuentren en distintos archivos de excel. La idea de esta macro es consolidar en un solo archivo lo que se tiene en distintas bases de datos de manera que esta ultima se vaya actualizando cada vez que se agreguen datos en las anteriores. Mucho le agradecería que me ayudara en este punto ya que no encentro la mejor manera de hacerlo.

2 Respuestas

Respuesta
1
Para consolidar bases de datos, no necesariamente se deben usar macros. Pero si la idea es esa, es necesario saber qué información está distribuida en los distintos archivos que se quiere consolidar. En primer lugar todas las tablas deberían tener las mismas columnas. Luego es necesario conocer si los archivos que se quiere consolidar van a ser siempre los mismos, es decir un número fijo de archivos y con el mismo nombre, o si el número de archivos a consolidar es variable, y si su nombre también es variable.
Con todos esos datos, se podría pensar en un procedimiento automatizado con macros y en su diseño.
En realidad se requiere que se realice en una macro de excel. La información que está distribuida en los archivos son numéricos y todos los archivos tienen la misma configuración de datos y columnas. Los archivos en si, tienen distintos nombres pero el número de archivos siempre es el mismo, conservando el mismo nombre. Estoy muy interesado que me ayudara en este sentido. Gracias de antemano por su valiosa ayuda.
De acuerdo a la información proporcionada, para tratar de darte una solución, vamos a hacer las siguientes suposiciones:
1. El archivo consolidado se llama "Consolidado"
2. Los archivos a consolidar son tres: "Archivo1", "Archivo2" y "Archivo3"
3. Las hojas en donde están las tablas de datos se llaman "Base" en todos los archivos
4. Los datos van de la columna "A" hasta la columna "Z"
Con estos supuestos, la macro sería la siguiente:
Sub Consolidar()
' Asumimos que los archivos están en una carpeta llamada Consolidar bajo el disco C
ruta = "C:\Consolidar\"
' Abrimos los 4 archivos
Workbooks.Open Filename:=ruta + "Consolidado.xls"
Workbooks.Open Filename:=ruta + "Archivo1.xls"
Workbooks.Open Filename:=ruta + "Archivo2.xls"
Workbooks.Open Filename:=ruta + "Archivo3.xls"
' Seleccionamos la hoja Base del archivo Consolidado y la inicializamos.
' Dejamos los nombres de los campos, que se supone que están en la fila 1
Workbooks("Consolidado.xls").Activate
Sheets("Base").Select
' Averiguamos la última fila grabada en este archivo
ufila = Range("A1").End(xlDown).Row
' Borramos los datos
Range("A2:Z" + Format(ufila)).ClearContents
' Copiamos los datos del primer archivo
Workbooks("Archivo1.xls").Activate
Sheets("Base").Select
ufila1 = Range("A1").End(xlDown).Row
Range("A2:Z" + Format(ufila1)).Copy
Workbooks("Consolidado.xls").Activate
Sheets("Base").Select
Range("A2").Select
ActiveSheet.Paste
'Repetimos el mismo procedimiento con los otros dos archivos a consolidar
Workbooks("Archivo2.xls").Activate
Sheets("Base").Select
ufila2 = Range("A1").End(xlDown).Row
Range("A2:Z" + Format(ufila2)).Copy
Workbooks("Consolidado.xls").Activate
Sheets("Base").Select
Range("A" + Format(ufila1 + 1)).Select
ActiveSheet.Paste
Workbooks("Archivo3.xls").Activate
Sheets("Base").Select
ufila3 = Range("A1").End(xlDown).Row
Range("A2:Z" + Format(ufila3)).Copy
Workbooks("Consolidado.xls").Activate
Sheets("Base").Select
Range("A" + Format(ufila1 + ufila2)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
' Cerramos los archivos de datos
Workbooks("Archivo1.xls").Close
Workbooks("Archivo2.xls").Close
Workbooks("Archivo3.xls").Close
' Grabamos el archivo Consolidado
Workbooks("Consolidado.xls").Save
End Sub
Esta macro puede ser modificada de acuerdo a tus datos reales.
Respuesta
1
Encontrarás varias respuestas a esta consulta aquí en el foro.
Te daré a grandes rasgos las instrucciones básicas para hacerlo.
Encendé la grabadora y copiá del primer libro lo que necesites. Apagá la grabadora y ahora en un módulo encontrarás la rutina.
En esta macro tendrás los nombres de libros, hojas, filas, col, etc. todas las referencias necesarias.
Lo que tendrás que tener en cuenta si copiarás registros unos a continuación de otros, es buscar la fila libre con una línea como esta:
filalibre = Activeworkbooks.Sheets("tu_hoja").Range("A65536").end(xlup).row + 1
Lo que te falta decidir es cómo buscarás los distintos libros a copiar. Buscá en la Ayuda del Editor, el tema GetOpenFilename, que te permite buscar el libro, ej:
'la variable guarda la ruta y nombre del archivo a abrir
milibro = Application.GetOpenFilename
Cuando tengas todo armado, si te queda algo para ajustar escribime nuevamente.
Saludos
Elsa
Invertir en conocimientos produce los mejores intereses (Benjamín Franklin)
http://es.geocities.com/lacibelesdepunilla/manual_VBA

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas