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

 
ForumForumDiskussionerDiskussionerVBAVBAÖppna Excel arbetsböcker från annan arbetsbokÖppna Excel arbetsböcker från annan arbetsbok
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2022-04-19 06:52
 

Hej jag är ute efter VBA-kod för att kunna öppna flera andra arbetsböcker från den befintliga arbetsboken men jag vill inte använda mig av absoluta adresser eftersom platsen där arbetsböckerna är placerade kan förändras.

Alla arbetsböckerna är alltid placerade i samma mapp men mappen kan vid något tillfälle vara placerad på skrivbordet, på ett USB-minne eller någon annan stans på datorn. 

Jag vill att de andra arbetsböckerna tillfullo skall öppnas med VBA-kod och inte använda mig av metoden att manuellt leta mig fram till den aktuella mappen.

Finns det någon som har en enkel metod för detta?

 

Nytt inlägg
 2022-04-19 15:14
 

Du måste ha något slags relation till mappen annars begär du att VBA skall läsa dina tankar.

Om arbetsboken med makrot alltid finns i samma mapp som övriga filer:

ThisWorkbook.Path

Om den aktiva/senast öppnade filen finns i rätt mapp

ActiveWorkbook.Path

 

Lägg ihop med något slags loopp som söker igenom mappen efter önskade filer och öppnar dem., typ:

 

Sub tst()

Dim sökväg As String

Dim Fil As String

sökväg = ThisWorkbook.Path

'Hämta namnet på den första excelfilen i mappen (du anger filändelsen för den typ av fill du vill söka efter här)

    Fil = Dir(sökväg & "\*.xlsx")

    Do

        'öppna filen

        Workbooks.Open sökväg & "\" & Fil

        'sök efter nästa excelfilen i mappen

        Fil = Dir

    Loop Until Fil = ""

End Sub

 

+ lite felkontroll osv (nu kommer den t.ex att försöka öppna makro-filen igen)

Nytt inlägg
 2022-04-20 06:58
 

 Hej jag undrar om det inte finns någon enklara metod för detta. Tex om jag flytar en mapp från ett ställe till ett annat ställe följer ju Excellänkarna mellan de olika arbetsböckerna med. Finns det inte någon liknande möjlighet i VBA vid öppning av arbetsböcker? Detta hade isåfall gjor det hela mycket enkelt.

Nytt inlägg
 2022-04-20 09:21
 

 Nu har jag lyckats skapa dynamiska sökvägar mha ett antal olika Excel-funktioner men jag kan bara öppna en arbetsbok. När programmet kommr till att öppna nästa arbetsbok får jag ett felmeddelande. Detta oberoende av vilken av arbetsböckerna jag skriver in först i koden.

 

Kan det måhända vara så att man måste aktivera eller välja arbetsboken som koden ligger i efter varje tillfälle som jag öppnat upp en arbetsbok?

Nytt inlägg
 2022-04-20 10:23
 

  Nu har jag lyckats skapa dynamiska sökvägar mha ett antal olika Excel-funktioner men jag kan bara öppna en arbetsbok. När programmet kommr till att öppna nästa arbetsbok får jag ett felmeddelande. Detta oberoende av vilken av arbetsböckerna jag skriver in först i koden.

 

Kan det måhända vara så att man måste aktivera eller välja arbetsboken som koden ligger i efter varje tillfälle som jag öppnat upp en arbetsbok?

Nytt inlägg
 2022-04-20 13:01
 
 Ändrad av Christian  på 2022-04-20 12:03:46

 Hej hej

Enklaste är nog att använda en fil som du aldrig flyttar på, för att flytta de andra filerna och hålla koll på deras nya position. Då kan du enkelt öppna dem tack vare att du hela tiden känner till sökvägen.

'Jag hade använt filesystemobject för detta som du aktiverar med: 
Dim FSO as object Set FSO = CreateObject("Scripting.FileSystemObject")   'Därefter fått användaren att välja destinationsmapp för filerna: 
Dim dFolderPath As String With Application.FileDialog(msoFileDialogFolderPicker)   If .Show = -1 Then                         dFolderPath = .SelectedItems(1)                End If  End With  
'Beskriva gamla mappen för dina filer, som du sedan tidigare har laggt i exempelvis cell a1, blad 1:    Dim sFolderPath as string
sFolderpath = thisworkbook.sheets(1).range("a1")
'Tilldela den till FSO objektet Set sourceFolder = FSO.Getfolder(sFolderPath) 'Flytta filerna:
For Each file In sourceFolder.Files fileName = file.Name If InStr(fileName, ".xlsx") Then sourceFilePath = file.Path destinationFilePath = dFolderPath& "\" & fileName
FSO.MoveFile Source:=sFolderpath, Destination:=dFolderPath
End If Next 'Skriva nya destinationsfoldern till cell A1 thisworkbook.sheets(1).range("a1") = dFolderPath & "\" Sedan kan du skriva liknande kod för att öppna dina filer, nu när du har den svåra biten kanske du kan hantera denna själv :) Ett annat alternativ är att ska en metod för att söka av alla mappar och undermappar på flera diskar för att hitta dina filer men detta alternativ tar tid, både att koda ihop, samt att använda metoden. Mvh Christian


Nytt inlägg
 2022-04-20 13:23
 

 Varje år skapar jag en ny mapp med ett antal arbetsböcker. Namnen på arbetsböckerna är desamma varje år för att Excellänkarna mellan arbetsböckerna skall fungera. Dessa arbetsböcker matar jag in data i för varje år och när jag kommer till ett nytt år kopierar jag mappen med dessa arbetsböcker och kallar dem istället för 2022, 2023 osv. Dessa arbetsböcker är mycket stora och jag måste succesivt utveckla dem och för att inte råka radera viktig data har jag byggt ett system där ett makro för radering av data i dessa arbetsböcker endast kan genomföras om jag placerat denna mapp under en annan mapp med namnet Mallar . Jag vill även att makrot för radering av data med automatik skall öppna upp de andra länkade arbetsböckerna och automatiskt genomföra raderingen av data.

 

Detta förfarande gör att sökvägen till mapparna kan bli olika beroende på var jag placerat mappen med arbetsböckerna. Jag har nu mha Excelfunktioner lyckats att dynamiskt skapa sökvägen till alla arbetsböckerna oberoende av var på datorn mappen är placerad. Dock uppkom nu ett annat problem att jag bara kan öppna en arbetsbok med VBA-kod. När programkörningen kommer till den andra arbetsboken som skall öppnas stoppar programkörningen och detta oberoende på vilken ordning jag placerat koden för att öppna arbetsböckerna i. Är detta ett problem som någon av er andra stött på tidigare. och är det någon som har en lösnig på att öppna flera arbetsböcker med ett makro.

Nytt inlägg
 2022-04-21 13:56
 

 Hej klasseman

Lägg gärna till koden som du har problem med, annars blir det svårt att svara på din fråga. Finns så mycket man kan göra tokigt, svårt att gissa sig till vad du har gjort för något fel. 

Mvh

Christian

Nytt inlägg
 2022-04-21 15:56
 

Först la jag in denna kod och då stoppade programkörningen på rad 2

Workbooks.Open Filename:=Range("Sökväg_Bolag_A")

Workbooks.Open Filename:=Range("Sökväg_Bolag_B")

 

OBS! Sökväg_Bolag_A respektive Sökväg_Bolag_B är namngivna områden där jag mha olika excelfunkrioner automatiskt skapar sökvägen beroende på var på datorn arbetsboken är placerad i för tillfället.

 

Jag har nu löst det hela genom att jag efter 

Workbooks.Open Filename:=Range("Sökväg_Bolag_A") lagt in en rad där jag aktiverat den arbetsbok som koden körs i och då stoppar inte programkörningen längre.

Nytt inlägg
 2022-04-21 19:35
 
 Ändrad av Christian  på 2022-04-21 18:37:35

 Ok, framtida tips. Thisworkbook refererar till boken som koden finns i. Ur objektet kan du hämta egenskaper såsom mappens sökväg, thisworkbook.path. Så slipper du använda funktionen =cell, som är lite buggig och antagligen orsaken till att du tvingas styra beteendet med activate. 

Workbooks.open(thisworkbook.path &"\ettfilnamn" &".xlsm")

Vill du göra något med dina öppnade böcker så kan det vara bara att tilldela en variabel.

Dim enNyBok as workbook: set enNyBok = workbooks.open(....som tidigare kod)

/Christian 

 

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAÖppna Excel arbetsböcker från annan arbetsbokÖppna Excel arbetsböcker från annan arbetsbok

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