"Tramite command" che vuol dire?Originariamente inviato da andrew4
Ho trovato questo codice, ma non riesco a usarlo tramite command.
Come faccio?
Non riesci ... cosa hai scritto? Quale problema hai incontrato?
"Tramite command" che vuol dire?Originariamente inviato da andrew4
Ho trovato questo codice, ma non riesco a usarlo tramite command.
Come faccio?
Non riesci ... cosa hai scritto? Quale problema hai incontrato?
Che codice inserisco dentro un command button per avere la lista dei file??
Quello che hai mostrato ... non capisco il problema ...
Non penso di poterlo inserire così in un command button:
Private Sub Command1_Click()
Set fso = CreateObject("Scripting.FileSystemObject")
Call ElencaFolders("C:\Programmi", fso)
MsgBox Str
Sub ElencaFolders(folderOr As String, ByRef fso)
Dim f, cartella, SubF
Static i As Long
Dim NewDir As String
Set f = fso.GetFolder(folderOr)
Call ElencaFiles(folderOr, fso)
Set SubF = f.SubFolders
If (SubF.Count > 0) Then
For Each cartella In SubF
NewDir = fso.BuildPath(folderOr, cartella.Name)
Call ElencaFolders(NewDir, fso)
Next
End If
End Sub
Sub ElencaFiles(folderOr As String, ByRef fso)
Dim folderO, insiemeFiles, file
Set folderO = fso.GetFolder(folderOr)
Set insiemeFiles = folderO.Files
If insiemeFiles.Count > 0 Then
For Each file In insiemeFiles
Str = Str + folderOr + file.Name + vbCrLf
Next
End If
End Sub
End Sub
Allora come?
Ovviamente le Sub
Sub ElencaFolders
Sub ElencaFiles
non possono andare all'interno del codice di un button!
E' solamente la prima parte
Set fso = CreateObject("Scripting.FileSystemObject")
Call ElencaFolders("C:\Programmi", fso)
MsgBox Str
che va all'interno del codice del button ... ovviamente, dopo che hai correttamente dichiarato le variabili che servono ...
Non pensavo avessi questo problema ... questo e' VB "di base" ... come programmi se non hai queste basi?
Ma infatti ci avevo messo solo la prima parte, però quando clicco sul command1, mi da errore l'msgbox dicendomi che str non è un argomento facoltativo.
Hai dichiarato la variabile str ? (fra l'altro sarebbe bene cambiare il nome a questa variabile ...)
L'ho scritto in questo modo:
Sub ElencaFolders(folderOr As String, ByRef fso)
Dim f, cartella, SubF
Static i As Long
Dim NewDir As String
Set f = fso.GetFolder(folderOr)
Call ElencaFiles(folderOr, fso)
Set SubF = f.SubFolders
If (SubF.Count > 0) Then
For Each cartella In SubF
NewDir = fso.BuildPath(folderOr, cartella.Name)
Call ElencaFolders(NewDir, fso)
Next
End If
End Sub
Sub ElencaFiles(folderOr As String, ByRef fso)
Dim folderO, insiemeFiles, file, str
Set folderO = fso.GetFolder(folderOr)
Set insiemeFiles = folderO.Files
If insiemeFiles.Count > 0 Then
For Each file In insiemeFiles
str = str + folderOr + file.Name + vbCrLf
Next
End If
End Sub
Private Sub Command1_Click()
Dim str As String
Set fso = CreateObject("Scripting.FileSystemObject")
Call ElencaFolders("C:\Programmi", fso)
Text1.Text = str
End Sub
Però il text rimane vuoto dopo qualche minuto di caricamento del programma, dove ho sbagliato?
Non devi dichiarare la str all'interno delle singole funzioni, ma globalmente.
non mi sembri un utente esperto ma io il suggerimento te lo doOriginariamente inviato da andrew4
Se io dal programma mi facessi dare la lista di tutte le cartelle apposto che di tutti i file.
Una volta avuta la lista delle cartelle, potrei richiedere la lista di file in una specifica cartella.
cerca
browseforfolder