Liste detalhes de todos os arquivos dentro de uma pasta usando VBA no Microsoft Excel

Anonim

Neste artigo, criaremos uma macro para reunir detalhes de todos os arquivos de uma pasta.

Antes de executar a macro, precisamos especificar o caminho da pasta na caixa de texto.

Ao executar a macro, ela retornará o nome do arquivo, caminho do arquivo, tamanho do arquivo, data de criação e data da última modificação de todos os arquivos da pasta.

Explicação lógica

Neste artigo, criamos duas macros “ListFilesInFolder” e “TestListFilesInFolder”.

A macro “ListFilesInFolder” exibirá detalhes relacionados a todos os arquivos dentro da pasta.

A macro “TestListFilesInFolder” é usada para especificar o cabeçalho e chamar a macro “ListFilesInFolder”.

Explicação do código

Defina FSO = CreateObject ("Scripting.FileSystemObject")

O código acima é usado para criar um novo objeto do objeto do sistema de arquivos.

Defina SourceFolder = FSO.GetFolder (SourceFolderName)

O código acima é usado para criar um objeto da pasta especificada pelo caminho.

Células (r, 1) .Fórmula = FileItem.Name

Células (r, 2) .Formula = FileItem.Path

Células (r, 3) .Formula = FileItem.Size

Células (r, 4) .Formula = FileItem.DateCreated

Células (r, 5) .Formula = FileItem.DateLastModified

O código acima é usado para extrair detalhes dos arquivos.

Para cada subpasta em SourceFolder.SubFolders

'Chamando o mesmo procedimento para subpastas

ListFilesInFolder SubFolder.Path, True

Próxima subpasta

O código acima é usado para extrair detalhes de todos os arquivos dentro das subpastas.

Colunas ("A: E"). Selecione

Selection.ClearContents

O código acima é usado para excluir o conteúdo das colunas A a E.

Siga abaixo para o código

 Option Explicit Sub ListFilesInFolder (ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) 'Declarando variáveis ​​Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim r As Long' Criando o objeto de FileSystemObject Set FSO = CreateObject ("Scripting .FileSystemObject ") Definir SourceFolder = FSO.GetFolder (SourceFolderName) r = Range (" A65536 "). End (xlUp) .Row + 1 Para Cada FileItem Em SourceFolder.Files 'Exibir propriedades do arquivo Células (r, 1) .Formula = Células FileItem.Name (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 'Obtendo arquivos em subpastas If IncludeSubfolders Then For each SubFolder In SourceFolder.SubFolders' Chamando o mesmo procedimento para subpastas ListFilesInFolder SubFolder.Path, True Next SubFolder End If Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nada ActiveWorkbook.Saved = True End Sub Sub TestListFilesInFolder () 'Declarando variável Dim FolderPath As String' Desativando atualizações de tela Application.ScreenUpdating = False 'Obtendo o caminho da pasta da caixa de texto FolderPath = Sheet1.TextBox1.Value ActiveSheet.Activate' Limpando o conteúdo das colunas A: E Colunas ("A: E"). Selecione Selection.ClearContents 'Adicionando intervalo de cabeçalhos ("A14"). Fórmula = "Nome do arquivo:" Intervalo ("B14"). Fórmula = "Caminho:" Intervalo ("C14"). Fórmula = "Tamanho do arquivo:" Intervalo ("D14"). Fórmula = "Data de criação:" Intervalo ("E14"). Fórmula = "Data da última modificação:" 'Formatação do intervalo de cabeçalhos ("A14: E14"). Fonte .Bold = True 'Chamando a macro ListFilesInFolder ListFilesInFolder FolderPath, True' Ajustando automaticamente o tamanho das colunas Colunas ("A: E"). Selecione Selection.Columns.AutoFit Range ("A1"). Selecione End Sub 

Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.

Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail