Como obter uma lista de ficheiros, incluindo subpastas, e uma lista de pastas usando VBA (macro Excel).
Data de Publicação:12 de Julho de 2022.
INFOMARTION > Como obter uma lista de ficheiros, incluindo subpastas, e uma lista de pastas usando VBA (macro Excel).
Visão geral.
Gostaria de descrever como obter uma lista de ficheiros e uma lista de pastas, incluindo subpastas, usando VBA (macro Excel). O artigo é destinado a pessoas que queiram programar as seguintes tarefas
- Quero obter uma lista de todos os ficheiros ou pastas sob uma pasta com os seus caminhos completos.
- Pretende realizar o processamento em loop para ficheiros ou pastas sob uma pasta.
Tabela de Conteúdos
1. Método de programação
Apresentam-se a seguir exemplos de programação de referência.
Como é criado em Função, gostaria que fosse copiado tal como está e que as chamadas de método fossem feitas a partir de Sub.
'Parameter Examples
'## filePath C:\Users\user\Desktop\test\
'## kind false:folder, true:file
'## list
Function getFolderOrFile(filePath As String, kind As Boolean, list As Collection) As Collection
'delete\
Dim filePathEnd As String
filePathEnd = Right(filePath, 1)
If filePathEnd = "\" Then
filePath = Left(filePath, Len(filePath) - 1)
End If
'Folder existence check
Dim result As String
result = Dir(filePath, vbDirectory)
If result = "" Then
MsgBox "File does not exist!"
Exit Function
End If
If kind Then
Dim buf As String
buf = Dir(filePath & "\*.*")
Do While buf <> ""
list.Add filePath & "\" & buf
buf = Dir()
Loop
Else
list.Add filePath
End If
Dim folder As Object
With CreateObject("Scripting.FileSystemObject")
For Each folder In .GetFolder(filePath).SubFolders
getFolderOrFile folder.Path, kind, list
Next folder
End With
End Function
Para o utilizar, passe como argumentos o seguinte.
- filePath・・・directório. Exemplo.)C:\Users\user\Desktop\test
- kind・・・Passe verdadeiro, falso. Se Verdadeiro, devolve uma lista de ficheiros. Se falso, devolve uma lista de pastas.
- list・・・A colecção é utilizada para armazenar os resultados. Um exemplo de implementação é dado abaixo.
Um exemplo de implementação de uma chamada de função real é mostrado abaixo.
Sub test()
Dim list As Collection
Set list = New Collection
getFolderOrFile "C:\Users\user\Desktop\test", False, list
Dim item As Variant
For Each item In list
'------TODO------
ThisWorkbook.Worksheets(1).Cells(1, 1).Value = item
Next
End Sub
Chamando getFolderOrFile irá armazenar uma lista de ficheiros ou uma lista de pastas em lista. O exemplo de implementação é Falso, pelo que a lista de pastas é armazenada.
Descreva o processo que pretende fazer na secção "TODO" no For statement. O ITEM pode ser tratado como uma variável String.
A fonte de referência é o processo de definir a lista adquirida para A1 em Excel. (O processo repetidamente sobrescreve a mesma célula.)
2. Descrição do código.
Este é o fim das instruções sobre como utilizar o sistema, seguido de uma explicação do código.
Os detalhes podem ser vistos no código, mas o ponto chave é a chamada adicional para obterFolderOrFile no método getFolderOrFile.
No processo de procura de pastas, o processo é ainda repetido, chamando o processo de procura de pastas, que é um mecanismo de procura de todas as pastas.
Ao chamar o seu próprio método, chama repetidamente o seu próprio método desde que a pasta seja encontrada, pesquisando todas as pastas.
3. resumo
Se precisar de ajuda para obter uma lista de ficheiros e uma lista de pastas, incluindo subpastas, usando VBA (Excel macros), consulte esta secção.
Obrigado por ter observado até ao fim.
■INFORMATION
Por favor clique aqui para ir para a página superior de INFORMAÇÃO.
■PROFILE
Por favor clique aqui para um perfil.
■Detalhes de contacto.