¿Como puedo ejecutar una macro en varios libros de excel... ?

Yo tengo una macro en el libro personal.xlsb que me modifica, ordena e elimina algunas columnas, esa macro la utilizo en varios archivo durante 15 días de cada mes, los cuales esos libros tienen diferentes nombres todos los meses, para que me puedan entender este es el proceso que realizo durante ese tiempo (15 Días) :::::: abro el archivo en excel FACTURAS_08-03-2013_ORDEN_1451Z_1_R1 como la macro esta en un libro personal.xlsb ejecuto la macro que corresponde a ese proceso, luego copio la información resultante y la pego en un libro donde tengo toda la información del mes en este caso seria MARZO, después abro otro archivo FACTURAS_08-03-2013_ORDEN_1451Z_1_R2 y vuelvo y le ejecuto la misma macro, copio el resultado y la pego en el libro de marzo, sigo y abro otro archivo FACTURAS_08-03-2013_ORDEN_1451Z_1_R3 y le ejecuto la misma macro... Ese mismo proceso lo ago con 18 archivos, lo que yo quiero es abrir todos esos archivos y cuando yo ejecute la macro, se ejecute en todos esos archivos abiertos en excel, que solo sea copiar la información resultante y pegarla en el libro de MARZO...

1 respuesta

Respuesta
3

Lo que yo te propongo es un bucle para abrir todos los libros de 1 carpeta, de a 1 x vez, realizar el proceso,(opcional: cerrarlo) y seguir con el libro siguiente.

La rutina irá en el libro marzo o donde tengas el resto del código. El único requisito es que los 18 libros deben estar en la misma carpeta.

Sub AbreLibros()
'x Elsamatilde
'guardo el nombre de mi libro activo x si tengo que volver o del libro que recibe la copia
libro1 = ActiveWorkbook.Name
'se abren todos los libros de extensión xlsm de la carpeta indicada
ChDir "D:\MENSUALES\FEBRERO"
archi = Dir("*.xlsm")
'se inicia un bucle
Do
Workbooks.Open archi
'ahora este es el libro activo y aquí entra tu código
MsgBox "Este es el libro " & ActiveWorkbook.Name
'al finalizar se cerrará el libro, guardando o no los cambios
ActiveWorkbook.Close False '(no guarda)
'se activa el siguiente archivo
archi = Dir()
'repitiendo el bucle hasta que no se encuentren archivos xlsm
Loop Until archi = ""
MsgBox "Fin de la captura"
End Sub

Ajusta las referencias (carpeta, tipo de archivo). En el ejemplo solo se muestra el nombre del libro que acaba de abrirse pero allí irá tu proceso.

Armalo y probalo. Si queda resuelta la parte de la consulta (bucle para abrir todos los libros) no olvides finalizarla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas