FUNCAO GETATTR
Private Sub ListSubDirs(Path As String)
' sub rotina que passa pasta por pasta do sistema de dados
Dim i As Integer
Dim count As Integer
Dim Pasta As String
Dim PastaOriginal As String
Dim D() As String
If Mid$(Path, Len(Path), Len(Path)) <> "\" Then
Path = Path & "\"
End If
PastaOriginal = Path
Pasta = Dir(PastaOriginal, vbDirectory)
count = 0
On Error Resume Next
Do While Trim$(Pasta) <> ""
If Pasta <> "." And Pasta <> ".." Then
If GetAttr(PastaOriginal + Pasta) = vbDirectory Then
If (count Mod 5) = 0 Then
ReDim Preserve D(count + 5)
End If
count = count + 1
D(count) = Path & Pasta
End If
End If
Pasta = Dir()
Loop
For i = 1 To count
MsgBox (D(i))
ListSubDirs D(i) & "\"
Next
End Sub
esse codigo mostra pasta por pasta , vez por vez, em uma msgbox, ......mas tm uma coiza sem logica, ele nao acha o diretorio arquivos de programas, alguem tm ideia o pq::???
' sub rotina que passa pasta por pasta do sistema de dados
Dim i As Integer
Dim count As Integer
Dim Pasta As String
Dim PastaOriginal As String
Dim D() As String
If Mid$(Path, Len(Path), Len(Path)) <> "\" Then
Path = Path & "\"
End If
PastaOriginal = Path
Pasta = Dir(PastaOriginal, vbDirectory)
count = 0
On Error Resume Next
Do While Trim$(Pasta) <> ""
If Pasta <> "." And Pasta <> ".." Then
If GetAttr(PastaOriginal + Pasta) = vbDirectory Then
If (count Mod 5) = 0 Then
ReDim Preserve D(count + 5)
End If
count = count + 1
D(count) = Path & Pasta
End If
End If
Pasta = Dir()
Loop
For i = 1 To count
MsgBox (D(i))
ListSubDirs D(i) & "\"
Next
End Sub
esse codigo mostra pasta por pasta , vez por vez, em uma msgbox, ......mas tm uma coiza sem logica, ele nao acha o diretorio arquivos de programas, alguem tm ideia o pq::???
A função GetAtrr traz os atributos de um arquivo ou diretório. Um arquivo ou diretório podem ter mais de um atributo. Um diretório pode ter os atributos vbDirectory, vbReadOnly e vbHidden ligados, por isso seu teste condicional esta falhando.
Faça a seguinte correção:
Troque: If GetAttr(PastaOriginal + Pasta) = vbDirectory Then
Por: If GetAttr(PastaOriginal + Pasta) And vbDirectory = vbDirectory Then
Para entender melhor o funcionamento lógico de .... And vbDirectory leia esses dois artigos.
Transformando um longo em inteiro sem ocorrência de overflow
Sistemas numéricos
Faça a seguinte correção:
Troque: If GetAttr(PastaOriginal + Pasta) = vbDirectory Then
Por: If GetAttr(PastaOriginal + Pasta) And vbDirectory = vbDirectory Then
Para entender melhor o funcionamento lógico de .... And vbDirectory leia esses dois artigos.
Transformando um longo em inteiro sem ocorrência de overflow
Sistemas numéricos
Porra agora eu tiro meu chapeu pra voce!!! parabens !!!! eh isso , jamais q eu ia acha isso !!! eh isso ae!!!!!!! vlws cara !!!! sou muito grato!!!! e PARABENS PORRA!!! essa eu nao espereva falowsssssss!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tópico encerrado , respostas não são mais permitidas