Encontrar um diretório e subdiretórios usando o Visual Basic for Applications (VBA) não é tão complicado como você pode pensar. No VBA , você pode usar a função " Dir " para obter nomes de diretórios em um caminho. Depois de ter encontrado o diretório que você está procurando , você pode usar o caminho do diretório para encontrar subdiretórios. Este processo é útil quando você precisa salvar um arquivo em um diretório específico , mas não tem o caminho completo para ele. Coisas que você precisa
Microsoft Office Excel
Show Mais instruções
1
Abra o Microsoft Office Excel , clique na guia "Desenvolvedor" e clique em " Visual Basic ". Clique no menu "Inserir" e clique em " Módulo " para inserir um novo módulo de código
2
Digite o seguinte para criar um novo procedimento sub: .
FindDirectories Private Sub ()
3
Adicione o seguinte código para criar três variáveis que você vai usar para encontrar o diretório de interesse:
Dim startPath as String Dim
myname as String
Dim dirFound as Boolean
4
Definir a unidade onde você deseja procurar o diretório e obter o primeiro diretório :
startPath = " C: \\"
myname = Dir ( startPath , vbDirectory )
5
Criar um loop while , pesquisar todos os diretórios em "C: \\ ", até que o diretório "Temp" foi encontrado, e chamada o " getSubDirectories " procedimento sub para obter todos os subdiretórios encontrados no diretório "Temp" :
do While dirFound = False
Se myname <> " . " E myname < > ".." Então
Se ( GetAttr ( startPath & myname ) E vbDirectory ) = vbDirectory Então
Se myname = " Temp" Então
dirFound = True
Chamada getSubDirectories ( startPath & myname & "\\" )
End If End If
End If
Se ( dirFound = False ) Then
myname = Dir
End If
loop
End Sub
6
Copie e cole o seguinte código para criar os " getSubDirectories "procedimento de sub e exibir todos os sub-diretórios encontrados no diretório" Temp " usando a janela Immediate:
getSubDirectories Private Sub ( startPath as String )
Dim myname as String
myname = Dir ( startPath , vbDirectory )
Do While myname <> " "
Se myname <> " . " E myname < > ".." Então
Se ( GetAttr ( startPath & myname ) E vbDirectory ) = vbDirectory Então
Debug.Print myname
End If End If
myname = Dir
loop
End Sub
7
Pressione " Ctrl" e "G " para visualizar a janela Immediate. Clique em " findDirectories " dentro e pressione " F5" para executar o programa .