Saltar al contenido

Resumir contenido de varios libros en una hoja excel


Recommended Posts

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.

publicado

Finalmente he podido crear un ejemplo, lo adjunto en un archivo .rar donde se encuentra una carpeta denominada "ejemplo" y que contiene a dos archivos, y que tienen la misma estructura pero información diferente. Estos son los archivos de los que tengo que extraer y consolidar la información con el código que he adjuntado. Luego está la hoja resultado con la información de como quedaría tras lanzar la macro.

Espero que sea de ayuda y claridad.

Saludos.

Archivos de ejemplo.rar

publicado

Buenas a todos,

¿Alguna pista sobre este tema?, o alguna alternativa en caso de no se ser posible adaptarlo para los requerimientos que necesita mi programa?.

Saludos.

  • 2 weeks later...
publicado

Buenas;

Veo que sigue complicado encontrar una solución a la duda. Por ahora me ha servido esta macro así como está, pero es muy posible que en breve necesite retocarla para extraer la información a la manera que necesito, igual son necesarios más ejemplos ... A ver si llega una ayudita.

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.