Hitta en katalog och underkataloger med Visual Basic for Applications ( VBA ) är inte så komplicerat som du kanske tror . I VBA kan du använda " Dir " -funktionen för att få katalognamn i en bana . När du har hittat den katalog du letar efter , kan du använda sökvägen för att hitta underkataloger . Denna process är användbar när du behöver spara en fil i en viss katalog , men inte har den fullständiga sökvägen för det . Saker du behöver
Microsoft Office Excel
Visa fler instruktioner
1
Launch Microsoft Office Excel , klicka på " Utvecklare " fliken och klicka på " Visual Basic . " Klicka på " Infoga " -menyn och klicka på " modul " för att infoga en ny kodmodul
2
Skriv följande för att skapa en ny sub förfarande : .
Private Sub findDirectories ( )
3
Lägg till följande kod för att skapa tre variabler som du använder för att hitta den katalog av intresse :
Dim startPath As String
Dim myname As String
Dim dirFound As Boolean
4
Definiera den enhet där du vill söka efter i katalogen och få den första katalogen :
startPath = " C : \\ "
myname = Dir ( startPath , vbDirectory )
5
Skapa en while-slinga , söka varje katalog i " C : \\ " tills " Temp " katalog har hittats , och ring de " getSubDirectories " sub-procedur att få alla underkataloger som finns i katalogen "TEMP" :
Do While dirFound = False
p Om myname < > " . " Och myname < > " .. " Sedan
Om ( GetAttr ( startPath & myname ) Och vbDirectory ) = vbDirectory Sedan
p Om myname = " Temp " Då
dirFound = Sant
Call getSubDirectories ( startPath & myname & " \\ " ) katalog
End If
End If
End If
p Om ( dirFound = False ) Sedan
myname = Dir
End If
Loop
End Sub
6
Kopiera och klistra in följande kod för att skapa " getSubDirectories " sub förfarande och visa alla underkataloger som finns i katalogen" TEMP " med direktfönstret :
Private Sub getSubDirectories ( startPath As String ) katalog
Dim mittnamn As String
myname = Dir ( startPath , vbDirectory ) katalog
Do While myname < > " "
p Om myname < > " . " Och myname < > " .. " Sedan
Om ( GetAttr ( startPath & myname ) Och vbDirectory ) = vbDirectory Sedan
Debug.Print myname
End If
End If
myname = Dir
Loop
End Sub
7
Tryck " Ctrl " och " G " för att visa Immediate fönstret . Klicka inuti " findDirectories " och tryck på " F5 " för att köra programmet .