• 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.

Waarde uit een cel in ander document

Status
Niet open voor verdere reacties.

Paul-RT

Giga Honourable Senior Member †
Lid geworden
6 dec 2003
Berichten
10.886
Hallo excel-knobbels.

Ik ben altijd aan het vechten als ik een waarde moet halen uit een cel uit een ander document.

Ik kan vanwege de complexheid van de documenten geen voorbeelje maken, dan alleen de formule plakken.

Bedoeling is het volgende:
Ik maak een factuur aan.
Ik selecteer uit een pul-down menu de klantnaam.

Als cel M10 gegeves bevat (is leeg bij openen factuur)
Dan moet er uit een document uit 1 cel een waarde gehaald worden.
Dat document heeft het volledige klantnummer, dat ik opgehaald heb uit een overzicht.

Bijvoorbeeld:
Ik selecteer Sanfru.
Klantnummer SFR0911001 wordt opgehaald en in P18 gezet.
Dan moet waarde uit P18 (bevat SFR0911001) gelezen worden en bijhorend .xls document geopend worden.
Dus SFR0911001.xls In dat document moet O3 worden gelezen.
Die waarde moet in E18 worden neergezet.

Formule (werkt niet)
Code:
If Sheets("Factuur").Range("M10") = "" Then
    Sheets("Factuur").Range("M10") = G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru\ Waarde uit P18.xls (is document.xls) waarde uit cel 03
End If
End Sub

Ik mis hierover nog een stuk kennis hoe ik dat voor elkaar krijg.
Liefst met een normale formule, maar mag ook met vba code.
 
Laatst bewerkt:
Paul-RT,

Kijk hier eens.

De macro's waarvan ik denk kan vanpas komen sla ik op.
Dit vond ik in mijn Macro's.

Om uit een gesloten file een gegeven op te halen.
Zet de code in een module en een knop op het blad.
Code:
Sub test()
 [A1] = "='[Afspraken.xls]Afspraken-An'!A1"
End Sub
Deze werkt heb het geprobeerd, het is alleen met VBA.
 
Laatst bewerkt:
\ok, maar dan is de "Afspraken.xls" bij mij de waarde uit een cel.
 
Als Afspraken.xls in cel B1 staat:

Code:
Sub test()
 [A1] = "='[" & [B1] & "]Afspraken-An'!A1"
End Sub
 
@ Wigi:
Hoe importeer ik dat in MIJN gegevens uit de startpost?
 
Code:
Sub nnn()
    With Workbooks.Open("G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru\" & ThisWorkbook.Worksheets("...").Range("P18").Value)
        ThisWorkbook.Worksheets("...").Range("M10").Value = "='[" & .Name & "]Sheet1'!O3"
    End With
End Sub

Vul de ... nog in en waarschijnlijk moet je het pad (met Sanfru erin) ook nog variabel maken.

Wigi
 
Variabel maken? geen idee wat je bedoeld.
Maar, ik ga de code in het document laatsen en zien wat er gebeurd. :)
 
Sanfru is de naam van het bedrijf van mijn zwager. Het is zijn facturering die ik 'even" op poten mag zetten.

De naam van de file die geopend moet worden bestaat uit het klantnummer.xls
Bijvoorbeeld SFR0911001 =waarde uit cel P18 (wordt SFR0911001.xls)
Dan uit dat bestand (SFR0911001.xls) uit de cel O3 een waarde ophalen.

Bij een volgende factuur is de waarde uit cel P18 bijvoorbeeld SFR0911043 en het bijhorende bestand dus SFR0911043.xls

Edit: Ok, ik bedoelte het goet. :D



Momenteel toegepaste code (werkt nog niet, maar ook geen foutmelding).
Beiden in "ThisWorkbook".
Cel P18 wordt gevuld nadat er met een pull-down menu een klant is geselecteerd.
Ophalen van de gegevens uit klantnr.xls / O3 gebeurd daarna pas.
Vandaar dat ik Workbook_Change heb geprobeerd.
Maar tot nog toe geen resultaat.
De gegevens moeten trouwens in cel E18 terechtkomen. Die had ik foutief opgegevens als M10. Verbeterd. ;)
Code:
Private Sub Workbook_Open()
  If Sheets("Factuur").Range("E19") = "" Then
      Sheets("Factuur").Range("E19") = Date
  End If
End Sub

Private Sub Workbook_Change()
  If Sheets("Factuur").Range("P18") = "" Then
    With Workbooks.Open("G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru\" & ThisWorkbook.Worksheets("Factuur").Range("P18").Value)
      ThisWorkbook.Worksheets("Factuur").Range("E18").Value = "='[" & .Name & "]Sheet1'!O3"
    End With
  End If
End Sub
 
Laatst bewerkt:
@ Paul-RT , de directory voor installatie van excel 2003 is destijds aangepast geweest
\Microsoft Office 2003\Excel\
in de meeste gevallen staat hier \Microsoft Office\2003\Excel\ , je kan dat eventjes verifiëren door via de verkenner een rechtermuisklik op de map "Klanten Sanfru " en dan zie je de directory structuur . Kijk dit eventjes na ;)
 
Het is wellicht handiger om de code in Worksheet_Change neer te zetten en vervolgens te controleren of cel P18 is gewijzigd.
Alleen in dat geval zal onderstaande code worden uitgevoerd.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("P18")) Is Nothing Then
         Range("E18").Value = ExecuteExcel4Macro("'G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru\[" & ThisWorkbook.Worksheets("Factuur").Range("P18").Value & "]Sheet1'!R3C15")

End If
End Sub

De gegevens uit cel O3 van het bestand dat in cel P18 is ingevuld wordt in cel E18 geplaatst.
Het bestand hoeft dus niet te worden geopend om de gegevens op te halen.

Met vriendelijke groet,


Roncancio
 
@ Trucker.
Nope. Dat is niet de installatie-map.
Dat is slechts de documenten partitie. Zeer gestructureerd.
Sja, wat moet je anders met 2,5 Tb aan interne harddisk ;)

@Roncancio:
Ok, dat zocht ik. Het was een gokje van me, omdat ik nog niet bij machte ben, om zelf vba-code te verzinnen.
Ben al blij dat ik die durf te mixen :)
Vanavond ga ik uitproberen. Moet zo eerst naar een klant.
 
Laatst bewerkt:
@Roncansio:
Op het eind "R3C15" ??? Dat was cel O3 waar de gegevens uit gehaald moeten worden.

Ik heb nu deze code, maar er gebeurd niets, terweil in de betreffende cel O3 wel een waarde staat.

Code:
Private Sub Workbook_Open()
  If Sheets("Factuur").Range("E19") = "" Then
      Sheets("Factuur").Range("E19") = Date
  End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("P18")) Is Nothing Then
    Range("E18").Value = ExecuteExcel4Macro("'G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru\[" & ThisWorkbook.Worksheets("Factuur").Range("P18").Value & "]Sheet1'!O3")
  End If
End Sub
 
Ik neem aan dat de code wordt gestart zodra cel P18 wijzigt?

R3C15 is inderdaad O3 (3e regel, 15e kolom).

Met vriendelijke groet,


Roncancio
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
    If Target.Address = "$P$18" Then
        With GetObject("G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru\" & [P18] & ".xls").Sheets(1).[O3]
            [E18] = .Value
            .Parent.Parent.Close
        End With
    End If
 Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
@ Roncansio en Warme bakkertje:

Beide code's werken niet.
Cel P18 wordt gevuld middels een vertikaal zoeken en een besturings element.
Cel E18 blijft leeg daarna.....
 
@ Roncansio en Warme bakkertje:

Beide code's werken niet.
Cel P18 wordt gevuld middels een vertikaal zoeken en een besturings element.
Cel E18 blijft leeg daarna.....

Welk besturingselement?
Dan kunnen we daar code aanhangen.

Worksheet_Change wordt namelijk niet gestart op het moment dat een cel wijzigt dmv een formule.

Ik heb het voor de zekerheid getest om mijn pc en ik krijg waardes te zien van gesloten bestanden.

Met vriendelijke groet,


Roncancio
 
Met het besturings element in een lege factuur selecteer ik een klant-naam uit het klanten-overzicht.
In de knop staat deze locatie, gelinkt naar cel A1.
Cel A1 heeft een witte letter (op wit papier) en valt weg achter het logo ;)
A1 wordt vervolgens gerbuikt voor vertikaal zoeken en ophalen van klant gegevens uit hetzelfde klanten overzicht.
Helaas kan ik in dat overzicht GEEN teller bijhouden hoeveel facturen een klant heeft gehad.
Dat doe ik in een history per klant, alwaar het factuur nummer voor die specifieke klant wordt gegenereerd.

Vanmiddag ga ik naar mijn zwager toe, en bespreek met hem ter plekke wat hij allemaal voor opties wil hebben.
Daarna pas ik de facturering aan.

Wellicht geen history per klant, maar een oplopend volgnummer.
Dat maakt het geheel simpeler.



[edit]
Als test heb ik het klantnummer in P18 even zelf ingetypt.
SFR0911001
Helaas, cel E18 blijft leeg.[/edit]

Je snapt, dat vanwege de complexheid van de diverse documenten het erg lastig is, om een kopie op helpmij te zetten......;)
 
Laatst bewerkt:
Krijg je geen foutmeldingen?
Hoe heet eigenlijk het werkblad waar de gegevens vandaan moet worden gehaald?
Wellicht dat daardoor de cel niet gevuld wordt omdat het werkblad niet kan worden gevonden.

Zoals ik al eerder aangaf, kan ik met de code gegevens uit cel O3 van een gesloten bestand ophalen.

Met vriendelijke groet,


Roncancio
 
Foutmelding bij 2e besturings elemant getackled. Die vraag verwijderd uit vorige post;)

Mapstructuur:
G:\Microsoft Office 2003\Excel\Sanfru\Klanten Sanfru
Bestand met cel O3: SFR0911001.xls (= waarde die in P18 komt middel vertikal zoeken)
Tabblad naam met cel O3: KlantenSanfru

De map-structuur gaat nog wijzigen, omdat het nu op mijn pc draait, op partitie G:\
Bij hem zal dat uiteindelijk denk ik E:\ worden. Wellicht zelfs op een laptop.
Veranderen de formules dan automatisch? Of moet ik die zelf aanpassen?

Vanavond zal ik verder reageren.
Ik heb nu een redelijk voorbeeld mee naar hem. Zeg maar een spook-factuur :D
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan