Avatar billede Slettet bruger
22. december 2004 - 10:10 Der er 7 kommentarer og
1 løsning

relativ kædesti

jeg skal have linket til en celle i et andet dokument, men stien skal være relativ.
Problemet ligger i, at filen, der skal linkes til, ligger et niveau oppe..
mit mappehieraki ser således ud:

Globals sheet.xls
- Preferred sheets (folder)
  CHP_preferred.xls

Det er CPH_preterred.xls, der skal hente en værdi fra Global sheets.xls, men det skal gøres relativt, så jeg kan flytte filerne.. hvordan gør jeg det?

/1
Avatar billede jkrons Professor
22. december 2004 - 10:11 #1
Så vidt jeg ved kan Excel ikke arbejde med relative stier.
Avatar billede Slettet bruger
22. december 2004 - 10:28 #2
:(.. hvor er det skod.. så må jeg vel i gang med at lave en funktion, så jeg kan gøre det alligevel..
Avatar billede jkrons Professor
22. december 2004 - 10:30 #3
;-(, men måske er der andre, der har gode idéer?
Avatar billede martin_moth Mester
22. december 2004 - 16:00 #4
Man kan som altid løse alting med lidt kode.

Du kan få stien på det aktive xls-dokument fra VBA. Ud fra den kan du sagtens finde stien til niveauet over. Altså:

I CHP_preferred.xls kan du ved følgende kode få de stier du ønsker:

Dim strCurrentFolder As String
Dim strMotherFolder As String
strCurrentFolder = ActiveWorkbook.Path
strMotherFolder = Mid(strCurrentFolder, 1, InStrRev(strCurrentFolder, "\") - 1)
MsgBox "Stien til denne xls-fil er : " & strCurrentFolder
MsgBox "Stien til niveauet over denne xls-fil er : " & strMotherFolder
Avatar billede martin_moth Mester
28. december 2004 - 11:18 #5
Halooo?
Avatar billede Slettet bruger
29. december 2004 - 10:11 #6
Det tog lidt tid at svare tilbage..

jeg er nået til at have lavet noget, der ikke virker..

jeg har lavet denne funktion
Function link(r As String)
    link.FormulaR1C1 = "='" & Mid(ActiveWorkbook.Path, 1, InStrRev(ActiveWorkbook.Path, "\")) & r
End Function

og jeg accesser den med denne linje
=link("[globals_status.xls]Sheet1'!R2C1")
Avatar billede bak Forsker
29. december 2004 - 23:23 #7
Jeg tror ikke det kan klares med en funktion på arket.
Denne sub ændrer alle links i arket . Du kan evt. kalde den fra Sub Auto_Open eller workbook_open

Sub DynamicLinks()
Dim aLinks As Variant
Dim stNewPath As String
Dim i As Long
stNewPath = GetPath(ThisWorkbook.Path)
aLinks = ActiveWorkbook.LinkSources()
If Not IsEmpty(aLinks) Then
    For i = 1 To UBound(aLinks)
        If Not GetPath(aLinks(i)) = stNewPath Then
        ActiveWorkbook.ChangeLink Name:=aLinks(i), _
            NewName:=stNewPath & "\" & GetFileName(aLinks(i)), Type:=xlExcelLinks
        End If
    Next i
End If
End Sub

Function GetPath(vFolder) As String
    GetPath = Mid(vFolder, 1, InStrRev(vFolder, "\") - 1)
End Function

Function GetFileName(vFolder) As String
Dim vTemp As Variant
    vTemp = Split(vFolder, "\")
    GetFileName = vTemp(UBound(vTemp))
End Function
Avatar billede bak Forsker
29. december 2004 - 23:27 #8
1^(½) -> Den vil selvfølgelig fejle hvis der ikke er et overliggende bibliotek. Jeg har ikke bygget nogen som helst fejlfangere på.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester