Como extraer datos a un archivo excel desde otro

Maestro. Mi problema es el siguiente: tengo muchos archivos excel que contienen datos como Nombre, Dirección, Fecha, etc. y mucha información descartable. Estos archivos tienen muchos formatos diferentes de modo que una misma información puede estar en diferentes celdas dependiendo de cada archivo.
Deseo recuperar, solo algunas celdas (por ejemplo Nombre y dirección) un nuevo archivo en dondes estén listadas toda esta información extraída de los archivos.
¿Me puedes ayudar con ese cachito?. De antemano muchos gracias.

1 respuesta

1
Respuesta de
Tengo algunas dudas :
Los archivos excel en que tienes los datos, ¿los procesas uno por uno?
¿Por qué puedes incluir que la macro te abra las planillas de un directorio
cuanto es la cantidad de datos que contiene cada archivo?
Para verificar la longitud de todos los datos
Los archivos con los datos son formularios de hace 4 años hasta hoy y han ido sufriendo modificaciones con el tiempo. Son literalmente miles y cada archivo puede contener 250 filas y 150 columnas. Los datos no son más de 50, pocas fórmulas y mucho texto. Se podrían abrir automáticamente en una macro ya que seria una operación que se haría una sola vez para obtener los datos. Los archivos los tengo almacenados en carpetas por mes. De modo que la tarea se podría seccionar en varias etapas para que no sea aterna. Espero que esta información extra "te ayude a ayudarme". Gracias
Esta macro realiza un listado de los archivos de un directorio y los copia en esta caso a la hoja2
Sub obtener()
Sheets("Hoja2").Select
Dim i As Long
Dim MiRuta As String
Dim MiNombre As String
i = 1
MiRuta = "C:\nueva carpeta\*.*"
MiNombre = Dir(MiRuta, 0)
Do While MiNombre <> ""
If MiNombre <> "." And MiNombre <> ".." Then
Range("A" & i) = MiNombre
i = i + 1
End If
MiNombre = Dir
Loop
End Sub
Con la Lista del los archivos realizamos una consulta deduciendo que cada archivo tiene como encabezado "NOMBRE" y en este caso "RUT"
Sub ListaDir()
Sheets("Hoja2").Select
Range("A1").Select
Selection.End(xlDown).Select
x4 = ActiveCell.Row
x5 = x4 - 1 + 1 'hasta aca obtenemos la cantidad de 'archivos del directorio
Range("A1").Select
For Z = 1 To x5
Sheets("Hoja2").Select
ruta = "ODBC;DSN=Excel Files;DBQ=C:\nueva carpeta\" & ActiveCell.Value & ";DefaultDir=C:\"
ruta2 = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Sheets("Hoja1").Select
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop
destino = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
ruta), Array("nueva carpeta;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range(destino))
.CommandText = Array("SELECT `Hoja1.Nombre, `Hoja1.RUT" & Chr(13) & "" & Chr(10) & "FROM `Hoja1 `Hoja1" & Chr(13) & "" & Chr(10) & "ORDER BY `Hoja1.Nombre")
.Name = "Consulta desde Excel Files"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
Next
End Sub
Con esta macro realizamos un recorrido de los archivos obtenidos con la anterior macro, y hacemos una consulta de los datos y la llevamos a excel
puedes darle el valor de una variable al PACH para no cambiarlo manualmente.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: