[VB6] – Elenco ricorsivo di file

Problema: Elencare tutti i file presenti in una cartella root e tutti quelli presenti nelle sue sottocartelle.

Soluzione:
La soluzione si avvale di una procedura ricorsiva che prende in input la radice da cui far partire la ricerca.

1 Passo: inserire i riferimenti (clicca su: Progetto -> Riferimenti ) a Microsoft Scripting Runtime

2 Passo: nella parte dichiarazioni inserire le seguenti linee di codice


Option Explicit

Dim FSO As New FileSystemObject
Dim BASEPATH As Folder

e poi ovunque voi vogliate inserite la seguente routine:


Sub ScanFolders(Path As String)

Dim FLD As Folder
Dim FIL As File
Dim curr_ext As String 'l'estensione del file corrente

Set BASEPATH = FSO.GetFolder(Path)

For Each FLD In BASEPATH.SubFolders
ScanFolders FLD.Path
For Each FIL In FLD.Files
' se vi serve ragionare in base all'estensione del file l'istruzione questa
curr_ext = Mid(FIL.Name, InStrRev(FIL.Name, ".") + 1)

Select Case UCase(curr_ext)
case else
Debug.Print FIL.Path
End Select
DoEvents
Next FIL
DoEvents

Next FLD

End Sub

Un altro tipo di funzione potrebbe invece prevedere l’uso di una variabile globale:


Public Function ListaFile(path As String, ByRef elenco() As String) As Boolean

'Questa funzione si occupa di gestire la copia dei file delle Curve di Carico

Dim FSO As FileSystemObject
Dim BASEPATH As Folder
Dim FLD As Folder
Dim FIL As File
Dim max As Long

On Error GoTo ListaFile_Err

Set FSO = New FileSystemObject
Set BASEPATH = FSO.GetFolder(path)

max = UBound(elenco_file)

For Each FIL In BASEPATH.Files
elenco_file(max) = FIL.path
max = max + 1
ReDim Preserve elenco_file(max)
Next FIL

For Each FLD In BASEPATH.SubFolders
Call ListaFile(FLD.path, elenco_file)
Next FLD

ListaFile = True

End Function

Commenti

commenti

Lascia un commento