Come ottenere un elenco di file, comprese le sottocartelle, e un elenco di cartelle utilizzando VBA (macro di Excel).


Data di pubblicazione:12 luglio 2022.



INFOMARTION > Come ottenere un elenco di file, comprese le sottocartelle, e un elenco di cartelle utilizzando VBA (macro di Excel).

Panoramica.

Vorrei descrivere come ottenere un elenco di file e un elenco di cartelle, comprese le sottocartelle, utilizzando VBA (macro di Excel). L'articolo si rivolge a coloro che desiderano programmare i seguenti compiti

  • Voglio ottenere un elenco di tutti i file o le cartelle sotto una cartella con i loro percorsi completi.
  • Si desidera eseguire l'elaborazione in un ciclo per i file o le cartelle sotto una cartella.

Indice dei contenuti

  1. Metodo di programmazione
  2. Codice Descrizione.
  3. sintesi

1. Metodo di programmazione

Di seguito sono riportati esempi di programmazione di riferimento.

Poiché viene creato in Function, vorrei che venisse copiato così com'è e che le chiamate ai metodi venissero effettuate da 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

Per utilizzarlo, passate i seguenti argomenti.

  • filePath・・・directory. Esempio.)C:\Users\user\Desktop\test
  • kind・・・Passare vero, falso. Se Vero, restituisce un elenco di file. Se false, restituisce un elenco di cartelle.
  • list・・・L'insieme viene utilizzato per memorizzare i risultati. Di seguito è riportato un esempio di implementazione.

Di seguito è riportato un esempio di implementazione di una chiamata di funzione.

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

La chiamata a getFolderOrFile memorizza un elenco di file o un elenco di cartelle in un elenco. L'esempio di implementazione è Falso, quindi l'elenco delle cartelle viene memorizzato.

Descrivete il processo che volete eseguire nella sezione "TODO" dell'istruzione For. ITEM può essere trattato come una variabile String.

La fonte di riferimento è il processo di impostazione dell'elenco acquisito in A1 in Excel. (Il processo sovrascrive ripetutamente la stessa cella.)

2. Codice Descrizione.

Qui finiscono le istruzioni per l'uso del sistema, seguite da una spiegazione del codice.

I dettagli possono essere visti nel codice, ma il punto chiave è l'ulteriore chiamata a getFolderOrFile nel metodo getFolderOrFile.

Nel processo di ricerca delle cartelle, il processo viene ulteriormente ripetuto richiamando il processo di ricerca delle cartelle, che è un meccanismo di ricerca di tutte le cartelle.

Chiamando il proprio metodo, richiama ripetutamente il proprio metodo finché la cartella viene trovata, cercando in tutte le cartelle.

3. sintesi

Se avete bisogno di aiuto per ottenere un elenco di file e un elenco di cartelle, comprese le sottocartelle, utilizzando VBA (macro di Excel), consultate questa sezione.

Grazie per aver guardato fino alla fine.




■INFORMATION

Fare clic qui per accedere alla pagina superiore di INFORMAZIONI.


■PROFILE

Cliccare qui per un profilo.


■Dettagli di contatto.

Per richieste di informazioni sull'articolo, contattateci qui.