Jump to content

Archived

This topic is now archived and is closed to further replies.

Leitium

Traer a una Hoja datos de otros archivos (misma celda)

Recommended Posts

Buenas! 
Busque en el foro pero no he podido encontrar lo que necesito.

Tengo que traer a un libro nuevo, datos de muchos archivos (entre 50 y 100).
Los archivos tienen diferentes nombres pero los datos están siempre en una solapa llamada resumen (como primer solapa), y en la misma celda B10 Y B11.
El nuevo archivo necesito armarlo como se adjunta.

LIBRO1.xlsx

Share this post


Link to post
Share on other sites

Hola Litium,

El siguiente código te ayudará, solo debes cambiar la ruta a la de contenedor de los archivos que quieras explorar, y copiar el código a un libro nuevo.

Sub a()
Application.ScreenUpdating = 0

    ruta = "C:\Users\cdurand2\Desktop\xxxx"
    
    fila = 5: columna = 2: c = 0

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(ruta)
    Set subfolder = folder.Files
    
    For Each file In subfolder
        Set nuevo = Workbooks.Open(file)
        
        With ThisWorkbook.Sheets(1)
            .Cells(fila + c, columna) = file.Name
            .Cells(fila + c, columna + 1) = nuevo.Sheets("resumen").[b10]
            .Cells(fila + c, columna + 2) = nuevo.Sheets("resumen").[b11]
        End With
        nuevo.Close
        c = c + 1
    Next
        Set nuevo = Nothing
    ThisWorkbook.Sheets(1).[b4] = "Archivo"
    ThisWorkbook.Sheets(1).[c4] = "celda b10"
    ThisWorkbook.Sheets(1).[d4] = "celda b11"
Application.ScreenUpdating = 1
End Sub

Slds.-

Share this post


Link to post
Share on other sites
Hace 19 horas, Cesar Durand dijo:

Hola Litium,

El siguiente código te ayudará, solo debes cambiar la ruta a la de contenedor de los archivos que quieras explorar, y copiar el código a un libro nuevo.


Sub a()
Application.ScreenUpdating = 0

    ruta = "C:\Users\cdurand2\Desktop\xxxx"
    
    fila = 5: columna = 2: c = 0

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(ruta)
    Set subfolder = folder.Files
    
    For Each file In subfolder
        Set nuevo = Workbooks.Open(file)
        
        With ThisWorkbook.Sheets(1)
            .Cells(fila + c, columna) = file.Name
            .Cells(fila + c, columna + 1) = nuevo.Sheets("resumen").[b10]
            .Cells(fila + c, columna + 2) = nuevo.Sheets("resumen").[b11]
        End With
        nuevo.Close
        c = c + 1
    Next
        Set nuevo = Nothing
    ThisWorkbook.Sheets(1).[b4] = "Archivo"
    ThisWorkbook.Sheets(1).[c4] = "celda b10"
    ThisWorkbook.Sheets(1).[d4] = "celda b11"
Application.ScreenUpdating = 1
End Sub

Slds.-

wooo me esta funcionando!! 
algunas cosas que no me di cuenta de avisar antes.
Se pueden dejar los archivos cerrados? Porque ahora tengo que abrirlos para que funcione.
En caso que algun archivo de la carpeta no tenga hoja resumen, que lo saltee? Ahora me esta tirando un error.

Los archivos tienen clave, pero se pueden ver solo lectura sin clave.

 

gracias por tu tiempo!!! 

 

Share this post


Link to post
Share on other sites

A que te refieres con archivos cerrados? Solo necesitas tener un libro abierto que sería en el que copies la información.

Te adjunto el código modificado para lo demás.

Sub a()
Application.ScreenUpdating = 0

    ruta = "C:\Users\cdurand2\Desktop\xxxx"
    
    fila = 5: columna = 2: c = 0

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(ruta)
    Set subfolder = folder.Files

    For Each file In subfolder
        x = 0
        Set nuevo = Workbooks.Open(file)

        For Each hoja In nuevo.Sheets
            If hoja.Name = "resumen" Then x = 1
        Next
        If x = 0 Then GoTo salto
              
        With ThisWorkbook.Sheets(1)
            .Cells(fila + c, columna + 1) = nuevo.Sheets("resumen").[b10]
            .Cells(fila + c, columna + 2) = nuevo.Sheets("resumen").[b11]
            .Cells(fila + c, columna) = file.Name
        End With
        c = c + 1
salto:
        nuevo.Close
    Next
        With ThisWorkbook.Sheets(1)
            .[b4] = "Archivo"
            .[c4] = "celda b10"
            .[d4] = "celda b11"
        End With
        Set nuevo = Nothing

Application.ScreenUpdating = 1
End Sub

Slds.-

Share this post


Link to post
Share on other sites
Hace 4 horas, Leitium dijo:

Se pueden dejar los archivos cerrados? Porque ahora tengo que abrirlos para que funcione

 

Hace 2 horas, Cesar Durand dijo:

A que te refieres con archivos cerrados? Solo necesitas tener un libro abierto

 

Hace 4 horas, Leitium dijo:

Los archivos tienen clave

 

Hace 17 horas, Héctor Miguel dijo:

mira de analizar (y adaptar) la sugerencia en el mensaje #3 de esta añeja conversación

saludos,
hector.

Share this post


Link to post
Share on other sites
En ‎07‎/‎11‎/‎2016 at 9:43 , Leitium dijo:

Busque en el foro pero no he podido encontrar lo que necesito

tengo dos o tres propuestas para solucionar la situación que enfrentas, todas con base en la conversación sugerida (no se si ya la analizaste), pero es necesario que comentes algunos detalles adicionales, o... ¿ya lo resolviste?

saludos,

hector.

Share this post


Link to post
Share on other sites

perdon, estoy con el hilo en 2 foros y veo que eres la misma persona que me responde en ambos =) 

con archivos cerrados, me refieron a que abro solo el libro donde quiero tener los datos y el resto de donde quiero extraerlos, no tener que abrirlos. 

Los archivos tienen clave (puesta por mi y es siempre la misma) solo como protección contra modificaciones porque varios sectores usan mis archivos, pero pueden ingresar solo lectura sin tener la clave.

el mensaje #3 lo vi, pero soy un queso probe varias modificaciones sobre eso pero no me corren. 

 

en el otro foro habia puesto tambien estas situaciones:

 

- podemos asumir que los 50-100 archivos van a estar cerrados (o los tendrás abiertos en la sesión ?)

estaran cerrados.

- en que ruta (carpeta) se encuentras los archivos ?

estan en una misma ruta ejemplo: M:\DATOS\PROYECTO\ (despues se subdividen en \clientes) esa parte puedo generar un reporte en cada carpeta de clientes o si es posible pondria el archivo que quiero crear en \proyecto y que tome los datos de las subcarpetas. 

- es la misma donde está el archivo "concentrador" ? (o quieres que la macro "busque hasta encontrar... que ?)

respondo arriba, si es posible me gustaria que el archivo concentrador este en una carpeta y tome datos de esa carpeta y subcarpetas. Pero sino puedo generar varios archivos contradores y despues unirlos. 
- algún "patron" en el nombre de los archivos ?

Ninguno. Cada archivo tiene el nombre del cliente.

Share this post


Link to post
Share on other sites

las preguntas que necesitan respuesta son otras y conforme a lo que comentas ahora, plis, no las dejes sin respuesta:

Hace 3 horas, Leitium dijo:

con archivos cerrados... no tener que abrirlos. 

Los archivos tienen clave (puesta por mi y es siempre la misma) solo como protección contra modificaciones... pero pueden ingresar solo lectura sin tener la clave

confirma (o complementa si es el caso) que los archivos que se revisarán...

  • tienen clave SOLAMENTE contra escritura (NO a la apertura)
  • TODOS tienen clave (no algunos si y otros no)
  • que en todos los libros se busca en la misma hoja
  • que solo necesitas rescatar esas dos celdas [B10] y [B11]
  • el formato de los archivos (97/2003 *.xls o también xl-2007+ xlsx/m/b)

saludos,
hector.

Share this post


Link to post
Share on other sites
  • tienen clave SOLAMENTE contra escritura (NO a la apertura) es correcto.
  • TODOS tienen clave (no algunos si y otros no) todos tienen
  • que en todos los libros se busca en la misma hoja es correcto
  • que solo necesitas rescatar esas dos celdas [B10] y [B11] es correcto
  • el formato de los archivos (97/2003 *.xls o también xl-2007+ xlsx/m/b) en su mayoria xlsx pero puede haber algun xls mezclado

gracias!!

Share this post


Link to post
Share on other sites
entendiéndose que todos los archivos tendrán clave solo contra escritura (NO contra apertura)...
  • descarga el adjunto (*.zip), lo descomprimes y obtienes un *.bas
  • abre un archivo nuevo y abre el editor de VBA (atajo de teclado: Alt + F11)
  • IMPORTA ese archivo *.bas (archivo > importar > ubicas y seleccionas)
  • EDITA la línea de la primer constante (variable: hoja) y pon el nombre de la hoja que se buscará en todos los archivos (deja las comillas dobles)
regresa al entorno de excel
  • pulsa Alt + F8, selecciona "la macro" y la ejecutas (sigue los pasos, creo que serán entendibles)
  • en la selección del tipo (xls o demás) pon atención a las "instrucciones"
  • si algún archivo no contiene la hoja que se busca, la macro devuelve "sin datos"
  • si algún archivo tiene clave "contra apertura"... te la va a preguntar dos veces por cada archivo (B11 y B12)
saludos,
hector.

getFromClosedWbookNOP.zip

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy