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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *