Lo que hace esta macro es abrir uno por uno los archivos de Excel que tengamos almacenados en una carpeta y ejecuta el código que nosotros le asignemos. Luego, nos manda un cuadro de mensaje con el nombre del archivo. Y finalmente, guarda los cambios y los cierra.
Esta macro es útil cuando nosotros tengamos que correr un mismo código para varios libros; ya que, de otro modo tendríamos que abrir cada uno de los archivos y ejecutar en cada uno de ellos dicho código, lo cual no resultaría práctico.
A continuación, se presenta un ejemplo de esta macro. Supongamos que el código que queremos correr en cada archivo es el siguiente:
Range("a1").ClearContents
Es decir, queremos borrar el contenido de la celda A1. Es importante mencionar que en lugar de este código usted puede ingresar el código que desee según lo que quiera que se ejecute.
Entonces, si queremos borrar el contenido de la celda A1 en todos los libros, tendremos que ingresar lo siguiente en nuestro módulo:
(Para mayor visualización de la imagen, hacer click en la misma)
Para usar esta macro debe hacer algunos cambios:
- Para efectos de este ejemplo la carpeta elegida fue “temporal”; sin embargo, es probable que la carpeta con la que usted trabaje tenga un nombre distinto. Por ello, deberá cambiar la palabra “temporal” cada vez que aparece en la macro, por el nombre de la carpeta que utilizará. Asimismo, debe percatarse que el tipo de archivos de Excel que abrirá serán los de tipo “xslx”.
- En lugar de poner “Range("a1").ClearContents” usted deberá escribir el código que quiera que la macro ejecute.
A continuación se adjunta el archivo de excel
Abrir todos los libros de un directorio
Por: Fiorella Mallqui Colonia
22/01/2016 a las 8:15 am
Buenas tardes. Gracias por este artículo, me ha servido de gran ayuda. He intentado utilizar el código que proponen y me funciona correctamente; sin embargo, cada vez que me abre un excel (contenido en la carpeta directorio que le he indicado) me aparece un cuadro de diálogo con el nombre del archivo y le tengo que dar a aceptar (antes de que pueda continuar abriendo el resto de archivos) ¿cómo puedo evitar que aparezca ese cuadro? tengo que manejar un elevado número de archivos y tener que darle 1000 veces a aceptar ralentiza mucho el proceso. Muchas gracias" Un saludo
10/05/2016 a las 11:23 pm
APPLICATION.DISPLAYALERTS=FALSE
08/03/2018 a las 8:48 am
Borre la parte que dice MSGBOX ACTIVE workbook.name q es lo que hace q aparezca esa ventan
No es necesario para q funcione el resto
29/01/2016 a las 9:23 am
Buenas.
Estuve leyendo el articulo y me pareció muy interesante, ademas de ayudar mucho,en cuanto se requiere de abrir varios archivos contenidos en una carpeta que pueden estar en constante cambio(hoy hay uno , mañana hay mas).
Tengo una inquietud y es sobre el orden en el que abrirá los archivos
¿lo hace en orden alfabético? o ¿lo hace según el orden como los tengamos organizados en las carpetas:Por nombre, Por fecha, Por Tipo, Por Tamaño).
Muchas Gracias.
08/03/2018 a las 8:56 am
Buenas,
El orden en. Así de DIR es según su tipo de formato del disco, si es NTFS es en orden alfabético, si es FAT devuelve en el orden que los archivos se guardaron en el disco.
La mayoría de discos hoy son en NFTS pero las memorias USB aún son FAT. Si es importante que se abran en orden alfabético debería percatarse de ese detalle. Podría funcionar bien en su disco pero si hace lo mismo con una USB memory quizá el resultado sea inesperado.
Mucha suerte
28/03/2018 a las 2:57 pm
y si quisiera aplicarlo en todas las carpetas y subcarpetas que tengan nombres diferentes, como se haría?, de antemano gracias
30/03/2020 a las 2:27 pm
Tengo esta misma duda. ¿Cómo se haría para que aplicase a exceles que estén en subcarpetas?
19/09/2020 a las 7:50 pm
Hola, Sebastian, yo también tuve el mismo interrogante asi que vi un ejemplo y lo adapte a lo necesitaba. Alli te copio el texto.
Sub ponerNombre()
Mostrar_Archivos (ThisWorkbook.Path & "\carpeta1")
End Sub
Sub Mostrar_Archivos(ruta)
Dim fs, carpeta, archivo, subcarpeta As Object
Set fs = CreateObject("Scripting.FileSystemObject")
If ruta = "" Then
Exit Sub
ElseIf Right(ruta, 1) "" Then
ruta = ruta & ""
End If
On Error GoTo ErrHandler
Set carpeta = fs.GetFolder(ruta)
For Each archivo In carpeta.Files
Workbooks.Open ruta & "\" & archivo.Name
Range("a1") = "Este es mi texto"
ActiveWorkbook.Close savechanges:=True
Next
For Each subcarpeta In carpeta.SubFolders
Mostrar_Archivos (subcarpeta)
Next
ActiveCell.EntireColumn.AutoFit
Exit Sub
ErrHandler:
ActiveCell.Value = "Ruta inexistente"
End Sub
17/04/2018 a las 12:16 pm
Super util gracias
11/01/2019 a las 3:54 am
Ahora cuando pongo este código (siendo MACROSEGTEMES la carpeta y nov-masu el archivo Excel que está dentro en el cual se requiere que se ejecute la macro)
Sub Archivos()
Dim Archivos As String
Archivos = Dir("C:\MACROSEGTEMES\*.xlsx")
Do While (Archivos "nov-masu")
Set wb = Workbooks(nov - masu.xlsm)
(Aquí me aparece un error 424 "Se requiere un objeto")
wb.Sheet.Activate
Range("A1:AZ1").Select
Selection.AutoFilter
Columns("C:AW").Select
Selection.EntireColumn.Hidden = True
Columns("AY:AZ").Select
Selection.EntireColumn.Hidden = True
ActiveWorkbook.Close SaveChanges:=True
Archivos = Dir
Loop
End Sub
06/04/2020 a las 1:21 pm
Primero que nada me sirvió mucho este articulo
Pero tengo esta situacion si tengo todo en una usb y lo quiero usar en otras pc como le hago si cambia la ruta al pasarla ya que me cambia la ruta de origen del los archivos que abre
Por favor ayuda
O acaso lo que se escribe dentro de la función dir se puede guardar como variable ?
25/02/2021 a las 7:44 am
¡Funciona a la perfección! ¡Y lo mejor es que es sencillísimo! ¡Muchísimas gracias!