|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
[VBA] ricerca di file su tutto il disco
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 Codice:
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
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Scusa, ma non ti basta una ricorsione ? Il problema è che non so come si passa il range...
Codice:
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
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
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 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
dove cavolo stà l'errore ?
Codice:
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
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:09.



















