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