En este artículo, crearemos una macro para recopilar detalles de todos los archivos dentro de una carpeta.

Antes de ejecutar la macro, debemos especificar la ruta de la carpeta en el cuadro de texto.

ArrowMain

Al ejecutar la macro, devolverá el nombre del archivo, la ruta del archivo, el tamaño del archivo, la fecha de creación y la fecha de última modificación de todos los archivos dentro de la carpeta.

ArrowOutput

Explicación lógica

En este artículo, hemos creado dos macros «ListFilesInFolder» y «TestListFilesInFolder».

La macro «ListFilesInFolder» mostrará detalles relacionados con todos los archivos dentro de la carpeta.

La macro «TestListFilesInFolder» se utiliza para especificar el encabezado y llamar a la macro «ListFilesInFolder».

Explicación del código

Establecer FSO = CreateObject («Scripting.FileSystemObject»)

El código anterior se utiliza para crear un nuevo objeto de sistema de archivos.

Establecer SourceFolder = FSO.GetFolder (SourceFolderName)

El código anterior se utiliza para crear un objeto de la carpeta especificada por la ruta.

Cells (r, 1) .Formula = FileItem.Name Cells (r, 2) .Formula = FileItem.Path Cells (r, 3) .Formula = FileItem.Size Cells (r, 4) .Formula = FileItem.DateCreated Cells ( r, 5) .Formula = FileItem.DateLastModified El código anterior se usa para extraer detalles de los archivos.

Para cada subcarpeta en SourceFolder.SubFolders ‘Llamar al mismo procedimiento para las subcarpetas ListFilesInFolder SubFolder.Path, True Siguiente subcarpeta El código anterior se usa para extraer detalles de todos los archivos dentro de las subcarpetas.

Columnas («A: E»). Seleccione Selection.ClearContents El código anterior se utiliza para eliminar contenido de la columna A a E.

Siga a continuación el código

Option Explicit

Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)

'Declaring variables

Dim FSO As Object

Dim SourceFolder As Object

Dim SubFolder As Object

Dim FileItem As Object

Dim r As Long



'Creating object of FileSystemObject

Set FSO = CreateObject("Scripting.FileSystemObject")

Set SourceFolder = FSO.GetFolder(SourceFolderName)

r = Range("A65536").End(xlUp).Row + 1

For Each FileItem In SourceFolder.Files

'Display file properties

Cells(r, 1).Formula = FileItem.Name

Cells(r, 2).Formula = FileItem.Path

Cells(r, 3).Formula = FileItem.Size

Cells(r, 4).Formula = FileItem.DateCreated

Cells(r, 5).Formula = FileItem.DateLastModified



r = r + 1



Next FileItem

'Getting files in sub folders

If IncludeSubfolders Then

For Each SubFolder In SourceFolder.SubFolders

'Calling same procedure for sub folders

ListFilesInFolder SubFolder.Path, True

Next SubFolder

End If

Set FileItem = Nothing

Set SourceFolder = Nothing

Set FSO = Nothing

ActiveWorkbook.Saved = True

End Sub

Sub TestListFilesInFolder()

'Declaring variable

Dim FolderPath As String

'Disabling screen updates

Application.ScreenUpdating = False

'Getting the folder path from text box

FolderPath = Sheet1.TextBox1.Value

ActiveSheet.Activate

'Clearing the content from columns A:E

Columns("A:E").Select

Selection.ClearContents

'Adding headers

Range("A14").Formula = "File Name:"

Range("B14").Formula = "Path:"

Range("C14").Formula = "File Size:"

Range("D14").Formula = "Date Created:"

Range("E14").Formula = "Date Last Modified:"

'Formating of the headers

Range("A14:E14").Font.Bold = True

'Calling ListFilesInFolder macro

ListFilesInFolder FolderPath, True

'Auto adjusting the size of the columns

Columns("A:E").Select

Selection.Columns.AutoFit

Range("A1").Select

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]