Hej och välkommen till Excelforum.se!
Vi brukar inte rekommendera att man gör så stora filsökningar som du är ute efter såvida man inte verkligen har behov av att leta efter vissa filer eller vill katalogisera datorn etc. Anledningen till detta är flera men framför allt att det oftast tar ganska lång tid att leta upp det man är ute efter. En annan nackdel är att en liknande lösning ofta är relativt komplex såvida man inte har erfarenhet av programmering generellt.
Om du ändå skulle vilja gå vidare med att göra en lösning som letar igenom hela datorn efter en viss fil så finns det flera olika sätt att lösa detta på beroende på vilken version av Excel som du använder.
En generell, ren och bra lösning för detta (om än något komplex) är dock att göra en rekursiv funktion som anropar sig själv i flera steg. I funktionen har man en inparameter med en sökväg där man vill påbörja sin sökning (i ditt fall roten på din enhet). Sedan skapar man ett Scripting.FileSystemObject som man tilldelar sökvägen man hade som inparameter via funktionen GetFolder([sökväg]). Denna gör så att man sedan kan använda sig av t.ex. Dir-funktionen för att leta efter en fil med ett visst namn i den aktuella mappen. Vill man sedan leta sig vidare i strukturen så får man göra ett rekursivt anrop till samma funktion fast med sökvägen till nästa undermapp och så vidare.
Som sagt, det är en ganska komplex struktur och det gäller att ha koll på vad man gör för annars riskerar programmet att hamna i en oändlig loop genom att kalla på sig själv om och om igen samt att börja äta upp systemets resurser. Var även noga med att avallokera de resurser och objekt som har skapats i funktionen.
Lycka till!
Mvh, Johan Öhrn Excelspecialisten
Johan Öhrn
Excelforum drivs av Excelspecialisten som bedriver utveckling av program, utbildning samt support och hjälp i Excel och VBA.
www.excelspecialisten.se
|
|