Entra

View Full Version : [VBA] ricerca di file su tutto il disco


misterx
18-12-2003, 15:45
qui è un inizio di codice che ho ricavato da un esempio sulla documentazione

Problema: si ferma solo alla prima directory: se qualcuno avesse voglia di modificare questo codice in modo che la ricerca si estenda per tutto il disco, grazie :)





Sub MostraFile()

i = 1: Range("a1:a500").Delete


Dim MyFile, MyPath, MyName

MyPath = "C:\"

MyName = Dir(MyPath, vbDirectory)

Do While MyName <> ""

If MyName <> "." And MyName <> ".." Then

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

Cells(i, 1).Select
Selection.Font.ColorIndex = 41
Cells(i, 1) = MyPath + MyName: i = i + 1

Else

Cells(i, 1) = MyPath + MyName: i = i + 1

End If

End If

MyName = Dir

Loop

End Sub

cionci
18-12-2003, 16:57
Scusa, ma non ti basta una ricorsione ? Il problema è che non so come si passa il range...


Sub MostraFile()

i = 1: Range("a1:a500").Delete

VisitaDir "C:\", i

End Sub

Sub VisitaDir(MyPath As String, i As ....)

Dim MyFile, MyPath, MyName


MyName = Dir(MyPath, vbDirectory)

Do While MyName <> ""

If MyName <> "." And MyName <> ".." Then

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

Cells(i, 1).Select
Selection.Font.ColorIndex = 41
Cells(i, 1) = MyPath + MyName: i = i + 1
VisitaDir MyPath + MyName, i

Else

Cells(i, 1) = MyPath + MyName: i = i + 1

End If

End If

MyName = Dir

Loop

End Sub

misterx
18-12-2003, 18:50
certo cionci è proprio di una ricorsione che necessita lo script ma non ho tempo di guardarci addosso :(

se c'è qualcuno che ha già risolto ben venga

misterx
19-12-2003, 10:41
dove cavolo stà l'errore ?



Sub vai()

Range("a1:a50000").Delete

MostraFile "C:\", 1

End Sub

Function MostraFile(MyPath As String, i As Integer)

MyName = Dir(MyPath, vbDirectory)

Do While MyName <> ""

If MyName <> "." And MyName <> ".." Then

If (GetAttr(MyPath & MyName) And vbDirectory) <> vbDirectory Then
Cells(i, 1) = MyPath + MyName: i = i + 1
Else
MostraFile MyPath + MyName + "\", i

End If

End If

MyName = Dir

Loop
MostraFile MyPath, i
End Function