Det betyder, at hvis mit ark med formler ("Regneark1")ligger i mappen M2: "../M1/M2/Regneark1.xls", så ligger mit ark med celler, der skal hentes værdier fra ("Regneark2") i mappen M1: ../M1/Regneark2.xls
Jeg har brug for at kunne flytte alle mapper fra og med M1 til et andet sted (samlet).
Hvad med søg/erstat? Det tager noget tid, hvis du har mange fjernreferencer, men hvis alle regnearkene kommer til at ligge i den samme mappe, skal du kun sætte det op en gang.
Har rodet lidt med det, og har fundet en "smart" funktion, der kan finde mappen et niveau op. Der er bare lige det problem, at funktionen bruger funktionen Split, som først blev indført med Excel 2000 (og jeg bruger stadig 97). Derfor kan jeg ikke checke om det virker, så jeg håber i bærer over emd mig.
Du skal blot huske er erstatte "Mappe1.xls" med navnet på den mappe som du har kæder til. Det retter kun én, men hvis det virker, kan vi se på resten.
Public Function PathGetParent(ByVal sFolder As String, Optional lParentIndex As Long = 1) As String Dim asFolders() As String Dim sPathSep As String Dim lThisFolder As Long
If Len(sFolder) > 0 Then 'Determine the path seperator If InStr(1, sFolder, "/") > 0 Then sPathSep = "/" Else sPathSep = "\" End If
If Right$(sFolder, 1) <> sPathSep Then sFolder = sFolder & sPathSep End If
asFolders = Split(sFolder, sPathSep) 'Get the requested parent folder For lThisFolder = 0 To UBound(asFolders) - lParentIndex - 1 PathGetParent = PathGetParent & asFolders(lThisFolder) & sPathSep Next End If End Function
Og så skal koden ændres lidt, så den kæde der skiftes fra ikke er det nuværende stinavn. Den gamle kæde (OldFileName) skal man selv taste ind, tror jeg. Og så kan vi klare det med de mange kæder ved at alle filnavne hedder 1_Filnavn, 2_Filnavn osv. Så der skal laves noget loop.
11:19:42 "ParentDir"? Hvad er det? Den findes ikke i mine Excel
11:59:15 I min version inkluderer CurDir IKKE den afsluttende \ - derfor er jeg nødt til at sætte den ind. Jeg regnede derfor med at den heller ikke var en del af PathGetParent funktionen. Det var åbenbart forkert, men fint at du selv fandt den fejl.
12:03:30 Har lavet et forslag til et loop. Prøv om det er noget i den retning du søger.
For FileNo = 1 To 45 FName = strBasisFName & FileNo & strBasisFExt OldFileName = strCurDir & FName NewFileName = PathGetParent(CurDir) & FName ActiveWorkbook.ChangeLink Name:=OldFileName, NewName:=NewFileName, Type:=xlExcelLinks Next FileNo
Jeg har lavet nogen konstanter af CurDir og PathGetParent(CurDir) sådan at disse funktioner kun kaldes én gang og ikke 45 gange. Det er ikke sikkert det betyder noget væsentligt for hastigheden - men alligevel.
Som du kan se så opbygges filnavne nu af tre dele
strBasisFName - som er den fælles del af filnavnet FileNo - et nummer på filen (dvs. den IKKE fælles del af filnavnet) strBasisFExt - filens extension
Du kan i pricippet selv bestemme rækkefølgen - blot SKAL strBasisFExt komme sidst :0)
Jeps, det virker. 1.000 tak for hjælpen. Ang. ParentDir, nej den er ikke hvad jeg troede. Men den var under hjælp...jeg ved ikke, hvad den kan bruges til. Men i hvert fald ikke til det her.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.