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.
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.