PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAWorkbooks.Open - sökmöjligheterWorkbooks.Open - sökmöjligheter
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2014-10-08 14:01
 
Hej,

Jag har ett enkelt macro som hjälper mig att öppna och stänga ett annat stängt excell dokument för att updatera viss info som ser ut såhär.


Private Sub CommandButton1_Click()

Workbooks.Open ("c:\Users\test1.xls")
Workbooks("test1.xls").Close

End Sub

Det jag nu vill göra är att ändra detta så att den söker efter filen "test1.xls" oavsett var den ligger på hårddisken och där igenom inte blir lika känslig för om någon skulle flytta den, en sökväg helt enkelt.

Tacksam för all hjälp

// Tobias
Nytt inlägg
 2014-10-16 13:32
 
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

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAWorkbooks.Open - sökmöjligheterWorkbooks.Open - sökmöjligheter

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter