Resumir contenido de varios libros en una hoja excel
publicado
Buenas noches a todos;
Estoy trabajando en una herramienta que entre otras cosas debe realizar la siguiente tarea: Imaginad una carpeta un número indeterminado de archivos excel (100, 500 o 1000) y cada uno de esos archivos de excel tiene un contenido idéntico en todos, pues bien, la macro que necesito debe leer todos esos archivos y extraer:
- el nombre del archivo. creando en una hoja una fila por cada nombre.
- dado que todos los archivos tiene la misma estructura, necesitaría extraer de cada uno de ellos la misma información, por ejemplo todo el contenido de la celda a1 en todos los archivos, en la celda f14 en todos los archivos y que me los coloque seguidamente detrás del nombre del archivo, de forma que al final tendré un hoja resumen con una fila por cada uno de los archivos de la carpeta seleccionada ( en el código que os pondré más adelante, la carpeta donde están los archivos se llama "ejemplo").
He estado investigando por la red, y finalmente he encontrado algo que casi se amolda a lo que estaba buscando: os dejo el código y el lugar donde lo he encontrado: Enlace
Sub consolidar_datos()
Dim SummarySheet As Worksheet
Dim FolderPath As String
Dim NRow As Long
Dim FileName As String
Dim WorkBk As Workbook
Dim SourceRange As Range
Dim DestRange As Range
Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
FolderPath = "C:\Usuarios\Documents\ejemplo\"
NRow = 1
FileName = Dir(FolderPath & "*.xl*")
Do While FileName <> ""
Set WorkBk = Workbooks.Open(FolderPath & FileName)
SummarySheet.Range("A" & NRow).Value = FileName
Set SourceRange = WorkBk.Worksheets(1).Range("A1:A4")
Set DestRange = SummarySheet.Range("B" & NRow)
Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
SourceRange.Columns.Count)
DestRange.Value = SourceRange.Value
NRow = NRow + DestRange.Rows.Count
WorkBk.Close savechanges:=False
FileName = Dir()
Loop
SummarySheet.Columns.AutoFit
End Sub[/CODE]
Y cual es el problema que tengo, que esta macro hace casi lo que necesito, me pone el nombre del archivo, en la primera celda de cada fila, pero me trae un rango de celdas y no es esto lo que necesito, es necesario que puede decirle al programa aquellos contenidos de las celdas que necesite y sobre todo que me las coloque en la misma linea que el nombre de cada archivo.
No se si me he explicado bien, pero es complicado al tratarse de directorios y carpetas para poner un ejemplo práctico.
A ver si me podéis ayudar con esto.
Muchas gracias y saludos a todos.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Buenas noches a todos;
Estoy trabajando en una herramienta que entre otras cosas debe realizar la siguiente tarea: Imaginad una carpeta un número indeterminado de archivos excel (100, 500 o 1000) y cada uno de esos archivos de excel tiene un contenido idéntico en todos, pues bien, la macro que necesito debe leer todos esos archivos y extraer:
- el nombre del archivo. creando en una hoja una fila por cada nombre.
- dado que todos los archivos tiene la misma estructura, necesitaría extraer de cada uno de ellos la misma información, por ejemplo todo el contenido de la celda a1 en todos los archivos, en la celda f14 en todos los archivos y que me los coloque seguidamente detrás del nombre del archivo, de forma que al final tendré un hoja resumen con una fila por cada uno de los archivos de la carpeta seleccionada ( en el código que os pondré más adelante, la carpeta donde están los archivos se llama "ejemplo").
He estado investigando por la red, y finalmente he encontrado algo que casi se amolda a lo que estaba buscando: os dejo el código y el lugar donde lo he encontrado: Enlace
Y cual es el problema que tengo, que esta macro hace casi lo que necesito, me pone el nombre del archivo, en la primera celda de cada fila, pero me trae un rango de celdas y no es esto lo que necesito, es necesario que puede decirle al programa aquellos contenidos de las celdas que necesite y sobre todo que me las coloque en la misma linea que el nombre de cada archivo.
No se si me he explicado bien, pero es complicado al tratarse de directorios y carpetas para poner un ejemplo práctico.
A ver si me podéis ayudar con esto.
Muchas gracias y saludos a todos.