In questo articolo, creeremo una macro per elencare tutti i file all’interno della cartella.

ArrowMain

Quando si esegue la macro, il nome del file e il percorso del file verranno visualizzati a partire dalla cella A17.

ArrowOutput

Spiegazione logica

In questo articolo abbiamo creato due macro, “subfolder_files” e “getting_filelist_in_folder”.

La macro “subfolder_files” prende il percorso della cartella e il valore booleano come input e restituisce il nome del file all’interno della cartella.

“Get_filelist_in_folder” viene utilizzato per chiamare la macro “subfolder_files”. Fornisce il valore del percorso della cartella alla macro, con il valore booleano impostato su “true”. Inoltre, quando sono richiesti nomi di file all’interno delle sottocartelle, viene assegnato il valore booleano “true”.

Spiegazione del codice

folder_path = Sheet1.TextBox1.Value Il codice precedente viene utilizzato per estrarre il valore della stringa dalla casella di testo.

Chiama subfolder_files (folder_path, True)

Il codice precedente viene utilizzato per chiamare la macro “subfolder_files”. Assegna il percorso della cartella e imposta la proprietà “include_subfolder” su true.

Imposta fso = CreateObject (“scripting.filesystemobject”)

Il codice sopra viene utilizzato per creare l’oggetto del file system.

Imposta sottocartella1 = fso.getfolder (percorso_cartella)

Il codice precedente viene utilizzato per creare l’oggetto della cartella definita.

For Each folder1 In subfolder1.subfolders Chiama subfolder_files (folder1, True)

Avanti Il codice precedente viene utilizzato per esaminare tutte le sottocartelle, all’interno della cartella principale.

Dir (percorso cartella1 & “* .xlsx”)

Il codice sopra viene utilizzato per ottenere il nome del file Excel.

Mentre nomefile <> “”

count1 = count1 + 1 ReDim Preserve filearray (1 To count1)

filearray (count1) = filename filename = Dir ()

Wend Il codice sopra viene utilizzato per creare un array, che consiste di tutti i nomi di file presenti all’interno della cartella.

Per i = 1 a UBound (filearray)

Celle (lastrow, 1) .Value = folderpath1 & filearray (i)

lastrow = lastrow + 1 Next Il codice precedente viene utilizzato per assegnare il nome del file all’interno dell’array alla cartella di lavoro.

Segui di seguito per il codice

Option Explicit

Sub subfolder_files(folderpath1 As Variant, Optional include_subfolder As Boolean)

'Checking whether to include subfolder or not

If include_subfolder Then



'Declaring variables

Dim filename, filearray() As String

Dim lastrow, count1, i As Integer



'Checking whether folder path contain backslash as last character

If Right(folderpath1, 1) <> "\" Then

folderpath1 = folderpath1 & "\"

End If



'Getting the filename of the first file in the defined folder path

filename = Dir(folderpath1 & "*.xlsx")



'Getting the row number of last cell

lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1



count1 = 0



'Looping through all the files in the folder

While filename <> ""

count1 = count1 + 1

ReDim Preserve filearray(1 To count1)

filearray(count1) = filename

filename = Dir()

Wend



On Error GoTo last



'Adding file name to workbook

For i = 1 To UBound(filearray)

Cells(lastrow, 1).Value = folderpath1 & filearray(i)

lastrow = lastrow + 1

Next



End If

last:

End Sub

Sub getting_filelist_in_folder()

'Declaring variables

Dim folder_path As String

Dim fso As Object, folder1, subfolder1 As Object

'Getting path of the folder

folder_path = Sheet1.TextBox1.Value

'Checking whether folder path contain backslash as last character

If Right(folder_path, 1) <> "\" Then

folder_path = folder_path & "\"

End If

'Calling subfolder_files macro

Call subfolder_files(folder_path, True)

'Creating object of File system object

Set fso = CreateObject("scripting.filesystemobject")

Set subfolder1 = fso.getfolder(folder_path)

'Looping through each subfolder

For Each folder1 In subfolder1.subfolders

Call subfolder_files(folder1, True)

Next

End Sub

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]