Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: opzoeken in extern bestand  (gelezen 2533 keer)

0 leden en 1 gast bekijken dit topic.

Offline krikke

  • Lid
  • *
  • Berichten: 25
  • Oplossing.be
opzoeken in extern bestand
« Gepost op: 14 juni 2005, 20:38:43 »
Hallo,

ik gebruik voor het opzoeken van gegevens in een ander bestand volgende formule: =INDEX('I:\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A10;'I:\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2).
Wanneer ik in cel A2 een artikelnummer intik, worden alle gegevens die in rij A staan en overeenkomen met dit
artikelnummer weergegeven.

Op zich werkt dit prima, maar het probleem stelt zich wanneer ik met mijn laptop op kantoor (waar hij in een netwerk hangt en art1.xls op de server staat) of thuis (waar art1.xls op mijn harde schijf staat) dit wil doen er elke keer naar de locatie van art1.xls wordt gevraagd.
Is het mogelijk om ervoor te zorgen dat art1.xls automatisch gevonden wordt (een soort universele locatie van het bestand in de formule)?

Bedankt voor de reacties.
Krikke
PC 1:
P4 2400 met Win XP Home Edition, 512 RAM
Router: Belkin 802.11g F5D7230-4
Netwerkkaart: VIA VT6105 Rhine III Fast Ethernet Adapter

PC2:
P4 2800 met Win XP Home Edition, 512 RAM
802.11g Draadloze netwerkkaart Belkin F5D7000

IE 6, Telenet

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:opzoeken in extern bestand
« Reactie #1 Gepost op: 20 juni 2005, 14:47:43 »
krikke,

Dat is oplosbaar met een UDF, user defined function. Met de volgende functie kan je checken of een bepaalde schijf bestaat:

Public Function DriveExists(ByVal DriveLetter As String) As Boolean
On Error Resume Next
Application.Volatile
DriveExists = (GetAttr(DriveLetter & ":\") And vbDirectory) = vbDirectory
End Function


Deze functie kan je aanroepen in elke sheet. Dan is het nog kwestie van je bestaande formule aan te passen met een IF. Iets in de zin van:
=ALS(DriveExists("I");
INDEX('I:\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A10;'I:\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2);
INDEX('D:\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A10;'D:\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2))


Die formule zal niet helemaal kloppen, maar dat is één mogelijke oplossing, waarbij je zelf de controle houdt...
WinXP - Excel 2000/XP/2003

Offline krikke

  • Lid
  • *
  • Berichten: 25
  • Oplossing.be
Re:opzoeken in extern bestand
« Reactie #2 Gepost op: 20 juni 2005, 21:14:19 »
Hoi Barthold,

twee vraagjes:
1. het script voor de udf maak je dat aan via VB Editor of zo? Ik heb het nu via macro maken en zo gedaan. De functie zoals jij ze opgeeft, vind ik niet bij de udf's in de functies.

2. als ik het goed doorheb, moeten deze udf en de aanpassingen in de cellen ervoor zorgen dat indien het art.xls bestand niet op de eerste plaats in de formule gevonden wordt, er op de tweede plaats gezocht moet worden. Ik heb mijn cellen aangepast, maar nog steeds krijg ik de melding dat een aantal koppelingen niet bijgewerkt kunnen worden.
Cel ziet er nu zo uit (met de juiste mappen):
=ALS(DriveExists("I");
INDEX('c:\data\excel\calculatie\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A6;'c:\data\excel\calculatie:\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2);
INDEX('e:\cp34\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A6;'e:\cp34\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2))

Hoe moet ik verder??

Krikke
PC 1:
P4 2400 met Win XP Home Edition, 512 RAM
Router: Belkin 802.11g F5D7230-4
Netwerkkaart: VIA VT6105 Rhine III Fast Ethernet Adapter

PC2:
P4 2800 met Win XP Home Edition, 512 RAM
802.11g Draadloze netwerkkaart Belkin F5D7000

IE 6, Telenet

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:opzoeken in extern bestand
« Reactie #3 Gepost op: 21 juni 2005, 13:44:21 »
holapola, ik zie dat er heavy duty support nodig is ;-)

De code voor die UDF moet in dezelfde workbook zitten, in een gewone codemodule. Je geraakt in de VBA editor door ALT+F11 te drukken. Ik voeg een voorbeeld bij...

Maar je formule zal zo niet werken, want nu kijk je na of drive I:\bestaat, waarna je data op drive C:\ gaat ophalen...

Ervan uitgaande dat op je werk de data op drive E:\ staat en thuis op drive C:\ zou je formule iets moeten worden als:

=ALS(DriveExists("E");
INDEX('e:\cp34\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A6;'e:\cp34\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2);
INDEX('c:\data\excel\calculatie\[art1.xls]qry_artikel2'!$A$2:$I$15001;VERGELIJKEN($A6;'c:\data\excel\calculatie:\[art1.xls]qry_artikel2'!$A$2:$A$15001;0);2))


De formule geeft dus voorrang aan drive E, als die bestaat, zal de formule proberen te lezen op drive E, anders op de C.
Het kan zijn dat ook in je pc thuis natuurlijk een drive E bestaat, dan kan je bijvoorbeeld die virtuele drive op je werk naar een andere drive letter mappen en je formule aanpassen...

Hopelijk is het nu iets duidelijker... De UDF vind je wel degelijk terug bij de gewone functies, maar je moet in de sectie "User Defined" kijken (zie screendump in zip)...

Succes,
Bart
WinXP - Excel 2000/XP/2003

Offline krikke

  • Lid
  • *
  • Berichten: 25
  • Oplossing.be
Re:opzoeken in extern bestand
« Reactie #4 Gepost op: 22 juni 2005, 18:43:59 »
Hoi Bart,

ik ben deze week niet meer op kantoor en weet zo niet op welke drive op de server mijn art1.xls staat, dus 'k zal het volgende week zeker uitproberen.
Je heavy duty support heeft het wel duidelijk gemaakt.

Bedankt,
Krikke ::)
PC 1:
P4 2400 met Win XP Home Edition, 512 RAM
Router: Belkin 802.11g F5D7230-4
Netwerkkaart: VIA VT6105 Rhine III Fast Ethernet Adapter

PC2:
P4 2800 met Win XP Home Edition, 512 RAM
802.11g Draadloze netwerkkaart Belkin F5D7000

IE 6, Telenet

 


www.combell.com