Ejecutar Macro en todos los arch. De un directorio

Hola,¿ qué tal?
Te escribo a  ver si me puedes ayudar.
He generado un macro en excel que se ejecuta para un archivo concreto en Excel ( libro1.xls)  y necesitaria que en lugar de que se ejecutara para ese archivo mirara en el directorio y se ejecutara uno por uno para todos los archivos que encuentre en ese directorio que empiecen por libro*.xls.
Lo que hace es que utiliza una plantilla para transformar un formato de fichero en una base de datos. Extrae esos datos y los pasa a otro fichero de manera acumulativa y el objetivo es que no se tenga que hacer de uno en uno, si no que lo haga para todos los archivos que encuentre en el directorio que se llamen, libro1, libro2 etc...
Os copio la macro
'  Macro
'
'
    Workbooks.Open Filename:="C:\Users\jlleon\Desktop\PEDIDOS MAPFRE\Libro1.xls"
    Workbooks.Open Filename:= _
        "C:\Users\jlleon\Desktop\PEDIDOS MAPFRE\CONVERSION PLANTILLA PEDIDOS MAPFRE.xls"
    Workbooks.Open Filename:= _
        "C:\Users\jlleon\Desktop\PEDIDOS MAPFRE\BBDD PEDIDOS MAPFRE.xlsx"
    Windows("CONVERSION PLANTILLA PEDIDOS MAPFRE.xls").Activate
    Columns("A:H").Select
    Range("A2").Activate
    Selection.ClearContents
    Columns("A:A").Select
    Range("A2").Activate
    Windows("Libro1.xls").Activate
    Columns("A:H").Select
    Range("A2").Activate
    Selection.Copy
    Windows("CONVERSION PLANTILLA PEDIDOS MAPFRE.xls").Activate
    ActiveSheet.Paste
    Range("C2").Select
    Windows("Libro1.xls").Activate
    Range("A1:H1").Select
    Application.CutCopyMode = False
    ActiveWorkbook.Close
    Range("B9").Select
    Sheets("BBDD").Select
    Rows("1:1").Select
    Range("I1").Activate
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveSheet.Range("$A$1:$Q$996").AutoFilter Field:=17, Criteria1:="<>"
    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("BBDD PEDIDOS MAPFRE.xlsx").Activate
    Range("A2").Select
    Selection.End(xlDown).Select
    Selection.Insert Shift:=xlDown
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Sheets("Informacion").Select
    Range("A1:H1").Select
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End Sub
Muchas gracias

1 respuesta

Respuesta
1
Agrege a tu codigo el procedimiento de busqueda de datos xls. Revisalo.
Dim StrArchivos As String
    Dim StrCarpeta As String
    StrCarpeta = "C:\Users\jlleon\Desktop\PEDIDOS MAPFRE\"
    ChDir StrCarpeta
    StrArchivos = Dir("*.xls")
        Do While StrArchivos <> ""
            Workbooks.Open Filename:=StrCarpeta & StrArchivos
            Workbooks.Open Filename:= _
                "C:\Users\jlleon\Desktop\PEDIDOS MAPFRE\CONVERSION PLANTILLA PEDIDOS MAPFRE.xls"
            Workbooks.Open Filename:= _
                "C:\Users\jlleon\Desktop\PEDIDOS MAPFRE\BBDD PEDIDOS MAPFRE.xlsx"
            Windows("CONVERSION PLANTILLA PEDIDOS MAPFRE.xls").Activate
            Columns("A:H").Select
            Range("A2"). Activate
            Selection. ClearContents
            Columns("A:A").Select
            Range("A2"). Activate
            Windows(StrArchivos). Activate
            Columns("A:H").Select
            Range("A2"). Activate
            Selection. Copy
            Windows("CONVERSION PLANTILLA PEDIDOS MAPFRE.xls").Activate
            ActiveSheet. Paste
            Range("C2").Select
            Windows(StrArchivos).Activate
            Range("A1:H1").Select
            Application.CutCopyMode = False
            ActiveWorkbook.Close
            Range("B9").Select
            Sheets("BBDD").Select
            Rows("1:1").Select
            Range("I1").Activate
            Selection.AutoFilter
            Selection.AutoFilter
            ActiveWindow.ScrollColumn = 2
            ActiveWindow.ScrollColumn = 3
            ActiveWindow.ScrollColumn = 4
            ActiveWindow.ScrollColumn = 5
            ActiveWindow.ScrollColumn = 6
            ActiveWindow.ScrollColumn = 7
            ActiveSheet.Range("$A$1:$Q$996").AutoFilter Field:=17, Criteria1:="<>"
            Range("A2").Select
            Range(Selection, Selection.End(xlToRight)).Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Copy
            Windows("BBDD PEDIDOS MAPFRE.xlsx").Activate
            Range("A2").Select
            Selection.End(xlDown).Select
            Selection.Insert Shift:=xlDown
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
            Range("A1").Select
            Application.CutCopyMode = False
            ActiveWorkbook.Save
            ActiveWorkbook.Close
            Sheets("Informacion").Select
            Range("A1:H1").Select
            ActiveWorkbook.Save
            ActiveWorkbook.Close
            StrArchivos = Dir
        Loop
Espero que sea de tu ayuda. Cualquier consulta no dudes en preguntar.
Suerte
Pitcher !

A y no olvides cerrar la pregunta si la respuesta fue de tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas