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
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 de pitcher_
1