Macro para abrir archivos y trabajarlos

Tengo un problema con una macro que estoy realizando. Verán, lo que debe hacer la macro es abrir los documentos de una ruta (esta ruta puede cambiar por lo que cree un browse folder) cuando selecciona la carpeta donde están los documentos, debe: abrir el documento, copiar la información, pegarla en el libro donde está la macro y luego cerrar el archivo, así con cada uno de los documentos que tiene la carpeta.

La macro que realice para dicho procedimiento es:

Subir leer_archicvos ()

Dim directorio as string, titulo as string

Título = "Seleccione la carpeta que contiene los archivos"

On error resume next

'abre El buscador de ruta

Whit CreateObject ("shell.application")

Directorio= . BrowseForFolder (0, titulo, 0).Items.Item.path

End with: on error goto 0

If directorio = ""  then

Msgbox "You don't select any file Directory.", , "Cancelled operation.!!!"

Exit sub

End if

Dim carpeta, archivos as string

Dim contador as integer

Dim archivos1 as string

Application.displayalerts= false

Contador= 1

Archivos=directorio & "\" & dir(directorio & "\")

Do while Len(archivos) >0

On error resume next

If archivos <> directorio & "\" then

'abre los archivos de la ruta

Archivos=dir()

Archivos1=archivos

Archivos = directorio & "\" & archivos

Workbooks. Open(archivos)

'copia info

Windows (archivos1). Activate

Range("a2").select

Selection. Copy

Windows(macro.xlsm). Activate

Range("a2").select

Selection.end(xlDown).select

Activecell.offset(1,0).select

Activesheet.paste

Contador = contador + 1

Else 

Exit sub

End if

Loop

End sub

El problema que me está pasando es que cuando abre la ruta, el primer archivo que hay no lo abre, pasa directamente al segundo... Y que al terminar de abrir todos los archivos, realiza el procedimiento de la macro dentro de la página macro, es decir que copia nuevamente todos los archivos que ya copio en el libro de la macro.

Agradezco enormemente el tiempo y la ayuda que me puedan dedicar

1 Respuesta

Respuesta
1

Esta línea:

 archivos = Dir()

Debe ir después de esta línea:

Contador = contador + 1

Es por eso que que empieza en el archivo 2, ya que lee el primer archivo, pero cuando pones la línea archivos = Dir() pasa al archivo 2.

Te anexo la macro con los ajustes, prueba y me comentas.

Sub Leer_Archivos()
'Act Por Dante Amor
    Dim directorio As String, titulo As String
    Dim carpeta, archivos As String
    Dim contador As Integer
    Dim archivos1 As String
    Dim l1, l2, h1, h2, u
    '
    titulo = "Seleccione la carpeta que contiene los archivos"
    'abre El buscador de ruta
    With CreateObject("shell.application")
        directorio = .BrowseForFolder(0, titulo, 0).Items.Item.Path
    End With
    If directorio = "" Then
        MsgBox "You don't select any file Directory.", , "Cancelled operation.!!!"
        Exit Sub
    End If
    '
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    contador = 1
    archivos = Dir(directorio & "\*.xls*")
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    Do While archivos <> ""
        'abre los archivos de la ruta
        Set l2 = Workbooks.Open(directorio & "\" & archivos)
        Set h2 = l2.Sheets(1)
        'copia info
        u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
        h1.Range("A" & u) = h2.Range("A2")
        l2.Close False
        contador = contador + 1
        archivos = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Archivos procesados : " & contador
End Sub

Te recomiendo poner el libro con la macro en otra carpeta de donde vas a leer los archivos.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola Dante, gracias por tu respuesta. Estuve probando la macro que me envías pero no me sirve para lo que requiero, es que la macro que te anexe es una parte de un total que ya configure, adicionalmente la que tú me propones no me copia la info de los archivos que abre sino que pone hace un listado con la cantidad de archivos y pone "YES" en cada una de estas celdas. Coloque el Archivos= dir() después del contador pero no me abre el archivo 

La macro que te envié corrige los problemas de tu macro.

Pero entonces tendrías que explicarme con ejemplos lo que tienes y lo que esperas como resultado y te preparo una nueva macro.

Envíame 3 archivos. El archivo 1 con la macro en la hoja 1 me tienes que poner cómo quieres el resultado. También me envías 2 archivos con información, la información de estos 2 archivos la tienes que poner en la hoja1 del libro 1 tal y como la necesitas, de esa forma podré ver qué tienes y en dónde lo quieres.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “sebastian camilo

Si resolviste la duda . [No olvides valorar la respuesta]

¡Gracias! Hola Dante, disculpa la tardanza. Estuve manejando tu macro y logré adaptarla pero entre tantas cosas olvide avisarte. Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas