Comando o macro que abra varios archivos de una carpeta
Hay una macro que me creaste a principio de agosto(8-8-15) la cual compara una información del archivo origen y busca en una carpeta los que cohiciden para extraer la información solicitada. Posteriormente me facilitaste un comando que corre dicha macro al abrir el archivo.
Lo que deseo ahora es un comando que me corra simultáneamente todos los archivo que tienen esa macro en una carpeta especifica llamada (Control pagos nuevo) para que se actualicen de forma automática para no tener que abrirlos uno a uno.
1 respuesta
H o l a:
Lo que hace la macro es leer los archivos de acuerdo a una matrícula.
¿Ahora cómo sería?
¿Y qué va a actualizar?
¿En cuáles celdas está la información y en dónde la va a poner?
Ya revisé la macro pero no entiendo qué le tengo que cambiar para lo que necesitas ahora.
Entiendo que la macro no hay que modificarla, sino el comando que me enviaste:
Private Sub Workbook_Open()
BuscarM01-15
End Sub
Esto me extrae la informacion de manera automatica cuando habro el archivo (M01-15), lo que deseo es correr una macro o que el mismo comando al ejecutarlo, me coloque todas las informaciones de todas las facturas que estan en la carpeta llamada (Carpeta de factura), en todos los archivos que tenga en la carpeta llamada(control de pagos) al mismo tiempo. Es decir que si tengo 5 archivos en carpeta (control de pagos)ej. m01-15, m02-15, m03-15,m04-15 y m05-15 y deseo correr la macro para que hagan la extraccion simultaneamente de la (carpeta de factura) ejecutar un solo comando, macro o boton que me permita actualizarlos todos al mismo tiempo.
En resumen, deseo algo que me abra en lugar de un solo archivo, todos los que estén en la carpeta (control pagos) los cuales tienen la macro que me hiciste.
H o l a:
Pon la siguiente macro en un libro nuevo.
Guarda el archivo nuevo una carpeta arriba de donde tienes tu carpeta "control pagos".
Sub AbrirArchivos() 'Por.Dante Amor Set l1 = ThisWorkbook ruta = l1.Path & "\Control Pagos\" arch = Dir(ruta & "*.xls*") ' Do While arch <> "" Set l2 = Workbooks.Open(ruta & arch) l2.Close True arch = Dir() n = n + 1 Loop ' MsgBox "Se abrieron " & n & " libros" End Sub
S a l u d o s
Por ejemplo tus archivos están en esta carpeta:
"C:\documents and Settings\Administrador\Escritorio\carpeta de factura\Control Pagos\"
Entonces creas un archivo nuevo y lo pones en esta carpeta:
"C:\documents and Settings\Administrador\Escritorio\carpeta de factura\"
Entras al nuevo archivo y ejecutas la macro.
La macro va a leer todos los archivos que estén en la carpeta \control pagos\ y cada que abra un archivo se ejecutará su macro de cada archivo, por ejemplo: abre el archivoA, el archivoA tiene en su evento Open la llamada a una macroX, entonces se ejecutará la macroX, al terminar la macroX, se cerrará el archivoA y abrirá el archivoB y así hasta terminar con todos los archivos que están la carpeta \control pagos\
Ok. Pero te aclaro que la carpeta (Control Pagos) no esta en la dirección que especificas, sino en el drive (D) de mi maquina.
¿Afecta eso?
Te estoy poniendo un ejemplo
Tienes que poner la macro en una carpeta anterior a donde tienes tus archivos, otro ejemplo:
D:\carpetas\trabajo\facturas\etc\control pagos\
Tu tienes que poner el archivo con la macro en esta ruta:
D:\carpetas\trabajo\facturas\etc\
Eso significa una carpeta antes.
¿Es decir que si tengo las dos carpetas directamente en el drive DE sin ninguna dirección no resultaría? Y solo debo ""abrir"" el archivo con la macro que me enviste para que los archivos que están en la carpeta (¿Control pagos) se actualicen?
Por ejemplo, yo tengo "Control de Pagos" en la dirección: D:\colegio reyes del saber\Control de pagos\ y coloqué un archivo con la macro en la dirección:
D:\Colegio reyes del saber\ y cuando lo abro voy a (control de pagos) y abro uno de los archivos para ver si llego información por si sola, pero dicha información aparece solo cuando lo abro. Es decir que no esta antes de que yo lo abra.
Estas fueron mis instrucciones:
Pon la siguiente macro en un libro nuevo.
Guarda el archivo nuevo una carpeta arriba de donde tienes tu carpeta "control pagos".
Sigue las Instrucciones para un botón y ejecutar la macro
- Abre tu libro de Excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Ahora para crear un botón, puedes hacer lo siguiente:
- Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
- Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
- Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
- Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: AbrirArchivos
- Aceptar.
- Para ejecutarla dale click a la imagen.
Hola Dante,
Segun me explicas arriba:
" La macro va a leer todos los archivos que estén en la carpeta \control pagos\ y cada que abra un archivo se ejecutará su macro de cada archivo, por ejemplo: abre el archivoA, el archivoA tiene en su evento Open la llamada a una macroX, entonces se ejecutará la macroX, al terminar la macroX, se cerrará el archivoA y abrirá el archivoB y así hasta terminar con todos los archivos que están la carpeta \control pagos\"
Ejecute al macro y se detiene cada ves que abre un archivo con el mensaje "Terminado" el cual debo cerrar para que cierre y abra el proximo archivo. Se supone que al correr la macro, no se detenga, sino que abra y cierre los archivos simultaneamente?
El mensaje "Terminado" se encuentra en la macro del libro: "archivoA" ese mensaje es parte de la macro del "archivoA", si no quieres que aparezca, deberás entrar a la macro del "archivoA" y eliminar ese mensaje. La macro de cada uno de los archivos ejecutará todos lo que tiene en su propia macro, si dicha macro tiene varios msgbox, también los ejecutará, la macro "AbrirArchivos", su función es abrir archivos, no podrá impedir alguna instrucción de las macros propias de cada archivo.
- Compartir respuesta