maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> Sistema: elencare i files delle subdirectories di una directory

Sistema: elencare i files delle subdirectories di una directory - VBA

NOTA. La soluzione ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dal codice o dalla soluzione proposta se usati impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare il codice o la soluzione in files importanti.

1 - Codice che mostra in varie MsgBox i vari files delle subdirectories della directory C:\Prova. Il codice va copia/incollato in un modulo standard.

Public Sub m()

    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim objSubfolder As Object
    Dim colSubfolders As Object
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Prova")
    Set colSubfolders = objFolder.Subfolders
    
    For Each objSubfolder In colSubfolders
        For Each objFile In objSubfolder.Files
            MsgBox objFile.Name
        Next
    Next

   Set objSubfolder = Nothing
   Set colSubfolders = Nothing
   Set objFile = Nothing
   Set objFolder = Nothing
   Set objFSO = Nothing
         
End Sub

2 - Codice che elenca nel Foglio1 i nomi dei file in colonna A e i nomi delle subdirectory in cui sono contenuti in colonna B. La directory che contiene le subdirectories è C:\Prova. Il codice va copia/incollato in un modulo standard.

Public Sub m()

    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim objSubfolder As Object
    Dim colSubfolders As Object
    Dim sh As Worksheet
    Dim lCont As Long
    
    lCont = 1
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Prova")
    Set colSubfolders = objFolder.Subfolders
    Set sh = ThisWorkbook.Worksheets("Foglio1")
    
    With sh
        For Each objSubfolder In colSubfolders
            For Each objFile In objSubfolder.Files
                .Range("A" & lCont).Value = objFile.Name
                .Range("B" & lCont).Value = objSubfolder.Name
                lCont = lCont + 1
            Next
        Next
    End With

   Set sh = Nothing
   Set objSubfolder = Nothing
   Set colSubfolders = Nothing
   Set objFile = Nothing
   Set objFolder = Nothing
   Set objFSO = Nothing
         
End Sub

Modificate il percorso ed il nome della directory che contiene le subdirectories con il vostro.

Per ulteriori informazioni su Microsoft Excel ed il suo Visual Basic, utilizzate questo forum:
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


Ultimo aggiornamento di questa pagina: 23/03/2011 - mauro gamberini