Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gegevens uit ander excel bestand

2,180 views
Skip to first unread message

Joris 3 Pinter

unread,
May 1, 2010, 6:16:07 AM5/1/10
to
Ik heb ca. 150 bestanden met de naam:

Rente 2008 12 01.xls
Rente 2008 12 02.xls
Rente 2008 12 03.xls
...

Via het dos commande dir>dir.txt heb de bestanden onder elkaar in Excel
gekregen.

Nu wil ik in 1 ander Excel bestand van deze 150 Rente bestanden cel B12
inlezen, zonder
al deze 150 Excel bestanden te hoeven openen.

=INDIRECT("='c:\data\["&A10&".xls]Map1'!B12

waarbij A10 de waarde Rente 2008 12 01 heeft, werkt niet.

Iemand een idee?

Met wat gepruts kom ik een heel eind maar om de 1 of andere reden kun je
niet zoeken/vervangen op
de ' (links allignment) anders was ik er al wel uitgekomen. (Wanneer ik met
de hand het quotje weg haal
doet de formule het, maar met zoek ' /vervang door niets lukt dat niet...)
Joris.

jan

unread,
May 1, 2010, 7:16:14 AM5/1/10
to
Joris,

INDIRECT werkt niet met gesloten bestanden.
Je zou de formules met VBA kunnen aanmaken, dan heb je INDIRECT (of
INDIRECT.ext die wel met gesloten bestanden werkt) niet nodig.

Jan


Joris 3 Pinter

unread,
May 1, 2010, 8:32:19 AM5/1/10
to

"jan" <j...@releerf.nl> schreef in bericht
news:elHzt%23R6KH...@TK2MSFTNGP04.phx.gbl...

Thnx.

VBA is me niet geheel vreemd maar kun je me 1 regel voorbeeld code VBA
geven? In de VBA help kan ik wel vinden hoe je bestanden importeert e.d.
maar niet hoe ik een celwaarde uit een ongeopend bestand kan lezen.
Joris.

Maurrieske

unread,
May 1, 2010, 9:10:10 AM5/1/10
to
VBA is een goede oplossing indien het probleem met grote regelmaat
terugkomt. Is het echter een eenmalig actie dan zou ik persoonlijk een en
ander anders oplossen.

Stap 1
De namen van de bestanden staan in kolom A onder elkaar.

Stap 2
Zoek het grootste gemeenschappelijk deel van de padnaam (of misschien wel de
volledige padnaam, in jouw voorbeeld c:\data\[ ook de haak openen meenemen,
echter n iet de enkel quote op dit moment).
Zet de padnaam als gewone tekst (zonder = teken en zonder ') in een extra
kolom (bijvoorbeeld kolom B)

Stap 3
Zet in cel C1 de volgende formule =B1&A1&".xls]Map1'!B12"
Kopieer deze formule 150 rijen naar beneden (zover als nodig is)

Stap 4
Kopieer kolom C en plak in kolom D als waardes.

Stap 5
En dan toch zoeken en vervangen.
Selecteer kolom D en druk op CTRL + H (sneltoetscombinatie voor zoeken en
vervangen)
Zoek naar c: en vervang door ='c: (inclusief de enkel quote)

Je zult zien dat nu koppelingen naar cel B12 op blad "Map1" van alle 150
bestanden gemaakt zijn.

Indien het iets is dat je vaker gaat gebruiken dan kun je inderdaad beter
VBA gebruiken.

Zet onderstaande code op een moduleblad van het bestand waar je de
koppelingen in wil leggen.
Sla het bestand vervolgens op in dezelfde map waar ook de Rente bestanden
staan.
Selecteer het blad waar de koppelingen moeten komen en start de macro
(ALT+F8) met de naam bestandenlijst.


Sub bestandenlijst()
Dim fs, f, f1, fc, teller
padnaam = ActiveWorkbook.Path
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(padnaam)
Set fc = f.Files
teller = 1
For Each f1 In fc
If LCase(Left(f1.Name, 5)) = "rente" Then
Range("A" & teller) = "='" & padnaam & "\[" & f1.Name & "]Map1'!B12"
teller = teller + 1
End If
Next
End Sub

Groetjes,

Maurrieske


"Joris 3 Pinter" <xkxaxtx8x9...@plverwijderxaxnxextx.xnxlx> schreef
in bericht news:4bdc1f59$0$14133$703f...@textnews.kpn.nl...

jan

unread,
May 1, 2010, 10:54:41 AM5/1/10
to
Joris,

Maurieske heeft het antwoord al gegeven.
Ik had een wat andere benadering bedacht, maar het is uiteraard aan jou wat
je prettiger vind.

Onderstaande code in een algemene module:

Sub Ophalen(Target As Range)
Dim rng As Range
Dim strPad As String
strPad = "C:\Data\"
For Each rng In Target
If Len(Dir(strPad & rng & ".xls")) > 0 Then
rng.Offset(0, 1).Formula = _
"='" & strPad & "[" & rng & ".xls]Blad1'!$B$12"
Else
rng.Offset(0, 1).ClearContents


End If
Next
End Sub

en de volgende coderegels in de module van het werkblad waarin de
bestandsnamen zijn (worden) ingevoerd:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Ophalen Target
End If
End Sub

Elke keer als in kolom A van laatst genoemd werkblad iets wordt ingevuld (of
gewijzigd d.m.v. bijvoorbeeld doorvoeren), wordt de procedure Ophalen
uitgevoerd.
Er wordt dan gekeken of er een bestand bestaat met de net ingevulde naam in
de map C:\Data.
Bestaat het niet, dan wordt de cel in kolom B (op dezelfde rij) leeggemaakt.
Bestaat het bestand wel, dan wordt een formule in die cel gezet die de
waarde ophaalt uit B12 op blad Blad1 van dat bestand.

Jan


Joris 3 Pinter

unread,
May 1, 2010, 11:11:51 AM5/1/10
to

"Maurrieske" <maurr...@hotmail.com> schreef in bericht
news:c33be$4bdc28b7$541c2006$26...@cache1.tilbu1.nb.home.nl...

Maurieske en Jan,
Hartelijk dank!
Ik ga voor de snelle oplossing van Maurrieske en zet de code van Jan in mijn
standaard map met voorbeeld codes van VBA!
Joris.

Ron de Bruin

unread,
May 2, 2010, 8:13:25 AM5/2/10
to
Dag Joris

Zie
http://www.rondebruin.nl/summary2.htm


Of gebruik de Merge add-in
http://www.rondebruin.nl/merge.htm


--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm

"Joris 3 Pinter" <xkxaxtx8x9...@plverwijderxaxnxextx.xnxlx> wrote in message
news:4bdbff6c$0$14133$703f...@textnews.kpn.nl...

0 new messages