Ecco il codice che ho fatto per iniziare:
Questo codice legge la cella attiva e mi restituisce i nomi delle subfolders da "A2" in poi.
-----------------------------------------------------------------------------------
Private Sub Workbook_Open()
Dim MyPath, MioFile
Sheets("Foglio1").Range("A1").Select
MyPath = ActiveSheet.Cells(1, 1)
MioFile = MyPath & "\" & "*.*"
MyName = Dir(MioFile, vbDirectory)
rg = 1
Do While MyName <> ""
If MyName = ".." Then GoTo lab1
rg = rg + 1
lab1: MyName = Dir
ActiveSheet.Cells(rg, 1) = MyName
Loop
UserForm1.Show
End Sub
--------------------------------------------------------------------------------------
Questa invece al lancio della userform mi aggiunge le subfolders nella prima combobox e mi conta tutti i files presenti in tutte le subfolders.
--------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim x
x = Range("A1").End(xlDown).Address
Range(x).Select
n = ActiveCell.Row
cv = 0
For x = 2 To n
cv = cv + 1
ComboBox1.AddItem Cells(x, 1)
Next
Set fs = Application.FileSearch
TipoFilesSearch = "*.*"
DirSearch = Range("A1")
With fs
.LookIn = DirSearch
.SearchSubFolders = True
.Filename = TipoFilesSearch
If .Execute > 0 Then
UserForm1.Label1.Caption = "Ho trovato " & .FoundFiles.Count & " file(s)"
Else
MsgBox "Non ho trovato alcune file(s)"
End If
End With
End Sub
-------------------------------------------------------------------------------------
e questo codice mi aggiunge le subfolders secondarie filtrando una subfolder primaria ed ovviamente mi conta i files a scalare.
-------------------------------------------------------------------------------------
Private Sub ComboBox1_Change()
Range("B1:B1000").ClearContents
ComboBox2.Clear
Range("B1") = Range("A1") & "\" & ComboBox1.Text
Dim MyPath, MioFile
MyPath = ActiveSheet.Cells(1, 2)
MioFile = MyPath & "\" & "*.*"
MyName = Dir(MioFile, vbDirectory)
rg = 1
Do While MyName <> ""
If MyName = ".." Then GoTo lab1
rg = rg + 1
lab1: MyName = Dir
ActiveSheet.Cells(rg, 2) = MyName
Loop
Dim x
x = Range("B1").End(xlDown).Address
Range(x).Select
n = ActiveCell.Row
cv = 0
For x = 2 To n
cv = cv + 1
ComboBox2.AddItem Cells(x, 2)
Next
Set fs = Application.FileSearch
TipoFilesSearch = "*.*"
DirSearch = Range("B1")
With fs
.LookIn = DirSearch
.SearchSubFolders = True
.Filename = TipoFilesSearch
If .Execute > 0 Then
UserForm1.Label1.Caption = "Ho trovato " & .FoundFiles.Count & " file(s)"
Else
MsgBox "Non ho trovato alcune file(s)"
End If
End With
End Sub
Adesso vorrei capire come fare a far uscire sulla listbox i files contati e se possibile renderli attivi al click come un collegamento ipertestuale.
Non fate caso al codice sicuramente sbagliato, non sono un programmatore ma prendo spunti da internet e mi diletto, quindi sarà sicuramente pieno di errori ed è per questo che chiedo il vostro aiuto.
Ciao a tutti
Peppe