Vba: come elencare i file in una cartella
È possibile utilizzare i seguenti metodi in VBA per elencare i file in una cartella:
Metodo 1: elenca tutti i file nella cartella
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
Cells(i + 1, 1) = objFile.Name
i = i + 1
Next objFile
End Sub
Metodo 2: elenca solo i file .xlsx nella cartella
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
If Right(objFile.Name, 4) = "xlsx" Then
Cells(i + 1, 1) = objFile.Name
i = i + 1
End If
Next objFile
End Sub
I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con una cartella che ha il seguente percorso file:
- C:\Utenti\bob\Documenti\data_corrente
La cartella contiene due file .xlsx e tre file .csv :
Esempio 1: elenca tutti i file nella cartella
Possiamo creare la seguente macro per elencare tutti i file nella cartella:
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
Cells(i + 1, 1) = objFile.Name
i = i + 1
Next objFile
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
Possiamo vedere che i nomi di tutti i file nella cartella (indipendentemente dalla loro estensione) sono ora elencati nella colonna A del nostro foglio Excel.
Esempio 2: elenca solo i file .xlsx nella cartella
Possiamo creare la seguente macro per elencare solo i file che hanno un’estensione .xlsx nella cartella:
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
If Right(objFile.Name, 4) = "xlsx" Then
Cells(i + 1, 1) = objFile.Name
i = i + 1
End If
Next objFile
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
Possiamo vedere che i nomi solo dei file con estensione .xlsx nella cartella sono ora elencati nella colonna A del nostro foglio Excel.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
Come creare cartelle utilizzando VBA
Come eliminare cartelle utilizzando VBA
Come rinominare un file utilizzando VBA
Come verificare se il file esiste utilizzando VBA