• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

koppeling naar externe werkmap via tekst in een cel

Status
Niet open voor verdere reacties.

harrybrinkman

Gebruiker
Lid geworden
7 nov 2019
Berichten
95
Toppers,

Ik maak in een bepaald bestand gebruik van gegevens die in een ander bestand staan. Nu kan ik uiteraard in een cel een koppeling naar de juiste gegevens maken, maar dat is niet dynamisch. Dus elke keer als de locatie van het externe bestand veranderd moet ik alle koppelingen weer aanpassen.
Nu zoek ik naar een methode waarin ik in 4 cellen de exacte locatie kan opgeven zoals

(A1 de map) C:\Harry\Documenten\Spreadsheets
(A2 bestandsnaam) verkopen.xlsx
(A3 Naam werkblad) Januari
(A4 Cel) B6

De cel waarin ik de benodigde gegevens wil tonen zou dan aan de hand van die 4 parameters de juiste gegevens moeten ophalen.
Hoe krijg ik het voor elkaar dat die 4 parameters samen de koppeling gaan maken. Op die manier hoef ik bij wijzigingen in het externe bestand uitsluitend 1 of meerdere parameters aan te passen om de koppeling weer werkend te krijgen.

Ik heb een (heel erg simpel) voorbeeldje meegestuurd, niet mijn werkelijke bestand want die mag ik niet delen van mijn werkgever

Wie helpt me?

Alvast bedankt,

Harry
 

Bijlagen

  • bestandskoppeling in cel.xlsx
    9 KB · Weergaven: 23
Ik kan het niet testen, maar dat zal dan zoiets worden (o.b.v. je voorbeeld):
Code:
=INDIRECT("'["&B3&"\"&B4&"]"&B5&"'!"&B6)
Bestand waarnaar je verwijst moet wel open staan.
 
Laatst bewerkt:
AlexCel,

Het werkt! dank je. Inderdaad wel een dingetje dat het andere bestand geopend moet zijn :(

Harry
 
Als je zoekt op dit forum zul je denk ik wel wat vinden om daar iets aan te doen, maar dat wordt dan VBA. En daar zijn andere specialisten voor hier.
 
Code:
Sub hsv()
Dim Wb As Worksheet
Set Wb = ThisWorkbook.Sheets(1)
  With Workbooks.Open(Wb.Range("b3") & "\" & Wb.Range("b4")).Sheets(Wb.Range("b5").Value).Range(Wb.Range("b6"))
    Wb.Range("e3") = .Value
    .Parent.Parent.Close False
  End With
End Sub

Zonder Wb werkt ook maar dan moet je wel vanuit het juiste werkboek en het juiste blad de code aanroepen.
Code:
Sub hsv()
  With Workbooks.Open(Range("b3") & "\" & Range("b4")).Sheets(Range("b5").Value).Range(Range("b6"))
    ThisWorkbook.Sheets("blad1").Range("e3") = .Value
    .Parent.Parent.Close False
  End With
End Sub

Beiden zijn zonder foutafhandeling.

Robuuster is:
De extensie moet wel vermeld worden in B4.
Code:
Sub hsv()
Dim Wb As Worksheet, s0 As String
Set Wb = ThisWorkbook.Sheets(1)
s0 = Wb.Range("b3") & "\" & Wb.Range("b4")
 If Dir(s0, 16) <> "" Then
    With Workbooks.Open(s0).Sheets(Wb.Range("b5").Value).Range(Wb.Range("b6"))
      Wb.Range("e3") = .Value
      .Parent.Parent.Close False
    End With
  Else
    Wb.Range("e3") = "niet gevonden"
 End If
End Sub

Daarnaast kan je het ook openen met GetObject, maar voor andere doeleinden dan mezelf ben ik daar geen fan van.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan