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

Gegevens importeren uit meerdere werkmappen en verwerken tot totaaloverzicht

Status
Niet open voor verdere reacties.

Paradoxx

Gebruiker
Lid geworden
2 nov 2007
Berichten
135
Goedemiddag,

Ik breek mijn hoofd al enkele dagen over het volgende probleem:

Ik wil gegevens, welke op vaste plaatsen op de sheet staan, uit diverse werkmappen (unieke namen) uit 1 specifieke map, importeren in een werkblad, om op die manier met 1 druk op de knop een overzicht te krijgen van alle nacalculaties die zijn gemaakt. Nu heb ik het forum doorzocht en ben hier uitgekomen.

De oplossing voor het probleem van gelinkte onderwerp is helaas niet meer beschikbaar, welke is aangedragen door Warm Bakkertje. Wellicht is het mogelijk deze nog een keer te plaatsen? (dan kan ik daar wellicht op doorborduren)

Mocht dit niet mogelijk zijn, zou ik graag met hulp van jullie dit alsnog voor elkaar willen krijgen.

Hierbij de voorbeeldbestanden
Bekijk bijlage Overzicht.xlsx
Bekijk bijlage VB1.xlsx
Bekijk bijlage VB2.xlsx
Bekijk bijlage VB3.xlsx

Alvast hartelijk bedankt voor het meedenken!
 
Laatst bewerkt:
is er niet een mogelijkheid om ipv verschillende werkmappen gewoon verschillende bladen te gebruiken?

Code:
=INDEX('C:\Users\Roel\Desktop\[VB1.xlsx]Product'!$C:$C;VERGELIJKEN(B$4;'C:\Users\Roel\Desktop\[VB1.xlsx]Product'!$A:$A;0))

Komt zoiets in de buurt?

1Bekijk bijlage Overzicht.xlsx
2Bekijk bijlage VB1.xlsx
3Bekijk bijlage VB2.xlsx
4Bekijk bijlage VB3.xlsx

Je ziet dat ik in ieder bestand wat hulpgetallen heb toegevoegd

Uiteraard moet je in de formule even de bestandslocatie aanpassen
Let hierbij op de komma's enzo

Makkelijkste is als je het opnieuw wil maken is gewoon beide bestanden openen en net doen alsof je tussen tabbladen gaat zoeken
 
Nee. Dit is namelijk een simpele uiteenzetting van het probleem. In werkelijkheid bevat de specifieke map enkele tientallen bestanden en elke bestanden tientallen gegevens. Wanneer ik dit in 1 werkmap zou plaatsen is het bestand niet erg overzichtelijk. Ook zijn de gegevens niet op 1 moment voor handen. Dit is namelijk een proces gedurende een jaar. Tevens wordt er na de tijd nog eens iets veranderd als blijkt dat een bepaalde norm of prijs toch anders is als in eerste instantie is aangenomen.

In ieder geval bedankt voor de input en ik zal het gaan onderzoeken.
 
Laatst bewerkt:
Dan is alles in 1 werkblad inderdaad geen optie.

Volgens mij is er een formule die formules samenzet. zodat je bijvoorbeeld de verwijzingen in de formule kunt zetten zodat je niet alle bestanden in hoeft te type.
Maar ik weet die zo niet uit mijn hoofd. Maar ik zal even zoeken.
 
Code:
=INDIRECT(tekst;1)

Dit is de formule

Maar het is wel een vrij lastige

Als het niet lukt hoor ik het wel
Succes
 
Ik wil formules vermijden omdat ik niet elke keer, wanneer er gegevens gewijzigd zijn, alle bestanden handmatig moet openen om gegevens bij te werken. Mijns inziens ligt de oplossing in een VBA code. Mijn VBA kennis is te klein om zelf tot een werkbare oplossing te komen. In het kort zouden de volgende stappen genomen moeten worden:

- 1ste bestand in map "Nieuw" openen
- gegevens kopiëren (waardes) van werkblad x en plaatsen op regel y van het overzichtbestand
- 1ste bestand sluiten zonder opslaan en verplaatsen naar map "verwerkt"
- 2de bestand in map "Nieuw" openen
enz..

De te kopiëren gegevens hebben allemaal dezelfde "naam", bestanden hebben unieke namen in een vaste map.

Wanneer het makkelijker is om de bestanden niet te verplaatsen is het mij ook goed. Het mij om het resultaat.

(ik loop nog met het idee te spelen om een "invul sjabloon" te maken, en deze te laten invullen. Deze zou ik dan wellicht een .txt of .csv bestand kunnen laten genereren, en deze laten inlezen....)
 
Basis om alle xls bestanden in map G:\OF\ op te sporen en de inhoud van het eerste blad van ieder bestand aan het huidige werkblad toe te voegen:

Code:
Sub M_snb()
   c00="G:\OF\"
   sn=split(createobject("wscript.shell").exec("cmd /c Dir"""& c00 & "*.xls"" /b/a").stdout.readall,vbcrlf)

   for j=0 to ubound(sn)-1
     with getobject(c00 & sn(j))
       thisworkbook.sheets(1).cells(rows.count,1).end(xlup).offset(1).resize(.sheets(1).usedrange.rows.count,.sheets(1).usedrange.columns.count)=.sheets(1).usedrange.Value
       .close 0
     end with
   next
End Sub
 
Laatst bewerkt:
Bedankt voor de code snb! Ik heb hem gelijk even uitgetest na een paar kleine aanpassingen.
- Ik heb de map locatie gewijzigd naar mijn eigen map
- *.xls gewijzigd naar *.xlsx,

Volgens mij hoef ik verder geen aanpassingen te doen om het te testen.

code gestart..... en toen niets.....
er wordt geen foutmelding gegeven, cmd scherm komt even tevoorschijn, maar er komt geen data in het huidige tabblad te staan.

Moet ik nog ergens iets toevoegen? Heb ik iets niet juist gewijzigd?
Ik heb 3 testbestanden in mijn map staan met extensie .xlsx, maar er gebeurd niets.
 
dan gaat er in ieder geval ook niets fout... ;)

Er ontbrak een spatie na Dir :

Code:
Sub M_snb()
   c00="G:\OF\"
   sn=split(createobject("wscript.shell").exec("cmd /c Dir """& c00 & "*.xls"" /b/a").stdout.readall,vbcrlf)

   for j=0 to ubound(sn)-1
     with getobject(c00 & sn(j))
       thisworkbook.sheets(1).cells(rows.count,1).end(xlup).offset(1).resize(.sheets(1).usedrange.rows.count,.sheets(1).usedrange.columns.count)=.sheets(1).usedrange.Value
       .close 0
     end with
   next
End Sub
 
Helemaal goed,... het werkt nu. Ik ben al een hele grote stap dichterbij.

Is er ook een manier om de tabbladen een voor een te importeren? En dan tussen elk gekopieerd bestand eerst de benodigde gegevens te verplaatsen naar de juiste bestemming. Zou je bijvoorbeeld een "verplaats macro" kunnen nesten?
Ik stel deze vraag omdat er uiteindelijk misschien wel 90 bestanden in die map komen te staan, en ik geen macro kan typen om zo een dergelijk tabblad overzichtelijk te maken.
 
Waarom denk je dat er een lus (for ... next) gebruikt wordt ?
De bladen worden dus een voor een geïmporteerd.
Wat moet er tussenin gebeuren dan ?
 
Sorry snb, ik had het niet helemaal goed verwoord. Ik zag de For...next lus wel, maar vroeg me af of deze te onderbreken is door er knip/plak stappen uit te voeren.
Mijn kennis van VBA is dat ik een macro kan opnemen, aanpassen en andere handigheidjes van anderen kan inpassen.

Per bestand moeten er gegevens gekopieerd worden tbv een overzicht. Omdat nu alle bestanden onder elkaar geplakt worden, zou ik dus wanneer het eerste bestand is geplakt, de volgende stappen willen uitvoeren:

-1. Bestand 1 wordt geplakt op werkblad 1
-2. Benodigde gegevens selecteren/verplaatsen naar juiste plaats in het werkblad voor het totaaloverzicht
-3. Werkblad 1 leegmaken
-4. Bestand 2 wordt geplakt op werkblad 1
-5. = stap 2
-6. = stap 3

enz....
 
Laatst bewerkt:
dan hoef je de gegevens uit het bestand helemaal niet in een werkblad te plakken. Zonder specificatie van 'Benodigde gegevens selecteren/verplaatsen naar juiste plaats in het werkblad voor het totaaloverzicht' kan niemand een zinnige suggestie doen.
Plaats eens een voorbeeldbestand met gegevens en een voorbeeld welke gegevens daarvan waar elders moeten komen te staan.
 
Laatst bewerkt:
Snb, zie eerste post... daar heb ik ook de bestanden bij staan. Overzicht is zoals het er uit moet komen te zien. VB1 is het eerste voorbeeld bestand, VB2 het tweede....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan