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

Celwaarde ophalen uit meerdere bestanden

Status
Niet open voor verdere reacties.

Cruimel

Gebruiker
Lid geworden
21 feb 2009
Berichten
56
Hallo Forumleden,
Behoorlijk wat gezocht op het forum voor een oplossing. Helaas zijn de gevonden items of niet opgelost of niet toepasbaar voor mijn uitdaging.

Schets van mijn wens:
Een bestand: rapportage 2013, wil ik gedurende de maand laten vullen met een celwaarde uit andere excelbestanden.
De rapportage heeft een aantal kolommen met in "A" Naam (deel van naam excelbestand), "B" projectnummer (deel van naam excelbestand) en in "C" de op te halen celwaarde.

De excelbestanden waaruit deze Celwaarde moet worden opgehaald zijn dynamisch, ze bestaan uit meerdere tabbladen, uit tabblad "factuur 2013" moet een bepaalde Celwaarde opgehaald worden zeg E30.
Gedurende de maand worden er meerdere excelbestanden aangemaakt die de "rapportage 2013" allemaal moet herkennen en waaruit de Celwaarde E30 opgehaald moet worden uit tabblad "factuur 2013".
Ik hoop dat ik de situatie helder heb gemaakt (is soms lastig). Ben benieuwd naar jullie reacties.

Alvast dank hiervoor.
Cruimel
 
dag Cruimel
zonder voorbeeld bestand kan ik me er geen voorstelling bij maken.
 
Hallo,
Bijgaand heb ik bestanden bijgevoegd.
Bedoeling is om de rapportage 2013 dynamisch te laten vullen met gegevens uit de bestanden die gedurende de maand worden aangemaakt op de directory.
Vast gegeven is de klantnaam (ABC per zak of DEF per zak), de maand en het projectnummer (wat wel een vaste plaats in naam bestand heeft maar variabel is qua opbouw (aantal posities en getal/abc)),

Durft iemand het aan??
Ben heel benieuwd....
Dank alvast
Cruimel
 

Bijlagen

  • ABC per zak januari 104050.xlsx
    21,9 KB · Weergaven: 69
  • DEF per zak januari 708090.xlsx
    21,7 KB · Weergaven: 48
  • Rapportage 2013 test.xlsx
    12,3 KB · Weergaven: 62
Het zou mij lukken maar omdat dit met VBA code opgezocht wordt, kan ik dit alleen met de excel 2003 versie, in 2007 werkt deze code niet, en mijn kennis van VBA is beperkt.
Ook doe ik dat op een andere manier en zou de opbouw van je bestand namen iets anders uitzien.
indien toch interessen dan hoor ik het wel.
 
Hallo Jean Paul,

Ik ben geïnterresseerd in alle soorten van oplossingen. Ook als ik bestandsopbouw of benaming zou moeten aanpassen.
Ben heel benieuwd.
Dank alvast voor je moeite.
Groet,
 
Dag Cruimel
Hier dan een werkend voorbeeld, alleen voor excel 2003 en bestanden die eindigen op ".xls".
Ook moeten de bestanden staan in "C:\cruimel" of je moet deze wijzigen in de VBA code, ook mogen er alleen je op te halen bestanden in staan en je werk bestand Rapportage 2013 test .xls.

In blad update doe je een update , en alle bestanden van cel E30 worden opgehaald.
In maandoverzicht doe je de validatie van de maand en van de klantnaam en alle projectnummers van die maand en klant zijn zichtbaar.

Ik hoop dat het voor jou bruikzaam is.
 

Bijlagen

  • Rapportage 2013 test.xls
    50,5 KB · Weergaven: 135
  • ABC$104050jan.xls
    49,5 KB · Weergaven: 106
  • DEF$708090jan.xls
    50 KB · Weergaven: 65
  • Esso$104050Feb.xls
    43 KB · Weergaven: 67
  • Jan klaasen$104050Jan.xls
    49,5 KB · Weergaven: 89
Hallo Jean-Paul,

Wat een mooi resultaat, heel bruikbaar. Ik kan het pad in vba makkelijk omzetten naar waar ik het wil hebben.
Is het ook mogelijk om 2 cellen uit de bestanden werkblad "factuur 2013" te halen? Ik wil niet alles overhoop gooien in jouw bestand.
Als ik bijvoorbeeld naar E30 ook C21 wil ophalen en in de rapportage in kolom Factuurnr. wil plaatsen.
Klopt het dan dat ik in de vba: Address = Cells(30, 5).Address , uit moet breiden naar: Address = Cells(30, 5)&(21, 3).Address ?
In de rapportage zie ik eerlijk gezegt niet zo 1,2,3 wat in het in indirect stuk moet aanpassen als ik deze in kolom factuurnr. wil plaatsen
In in blad update, voeg ik een extra kolom toe na kolom C30. in blad validatie zie ik eerlijk gezegt niet zo snel wat ik in het stuk "indirect" van de formule moet aanpassen zodat hij het factuurnr ook daadwerkelijk daar plaatst.
Heb je nog even wat energie en tijd hiervoor over? Lukt of wil je dat niet, geeft niet hoor, ik ben al heel blij met dit huidige en goed werkende resultaat.

Dankjewel alvast!!
 
Hier een aangepaste versie, er zat ook een foutje in de formule , maar dat is nu aangepast,ook zal je het vorige bestand Rapportage 2013 test.xls moeten verwijderen zeker uit de map waar al u op te halen bestanden staan, anders krijg je en fout melding .
 

Bijlagen

  • Rapportage 2013 test(upd).xls
    59 KB · Weergaven: 197
Jean-Paul,

Geweldig, werkt prima de luxe. Nu ga ik hem omzetten naar het echte bestand. Ik ga ervan uit dat ik hier geen problemen mee krijg.
Ik laat vraag nog even openstaan totdat ik dit heb gefixed.
Hartstikke bedankt voor je mooie werk. De vba kan ik goed volgen en begrijpen. Het indirect gedeelte in de formule van de rapportage iest minder. Daar ga ik mee aan de slag, want dit is een heel handige formule voor meer toepassingen die zou kunnen bedenken..

Dank nogmaals!!!
 
@ Jean-Paul

Waarom zou dit niet werken in XL2007 ?
Als je bij Right de 4 wijzigt in 5 en de extensie .xls wijzigt in .xlsx dan zie ik niet in waar er zich een probleem zou kunnen stellen.
Ik gebruik zelf ExecuteExcel4Macro al enkele jaren in XL2007 zonder problemen.
 
@Warme bakkertje

Ik heb de vba code getest op een xlsx bestand #3 van deze topic, en juist daar kreeg ik een error
op de regel ExecuteExcel4Macro.
Daar ik nog steeds met 2003 werk en daar alles goed verloopt, dacht ik dat het aan de versie 2007 lag, maar als dat zo niet is ben ik blij dat de code voor meerdere forum lezers bruikbaar is.
 
Beperk het aantal schrijfbewerkingen naar je werkblad.
Deze werkt in XL2007 (xlsx)
Code:
Sub UpdateBestanden()
'Range("OudeBestanden").ClearContents
Dim FilePath$, Row&, Column&, Address$
Dim sq()
'change constants & FilePath below to suit
      '***************************************
      Const SheetName$ = "factuur 2013"
      Address = Cells(30, 5).Address
      Address2 = Cells(21, 3).Address
      FilePath = "G:\Cruimel\"
      '***************************************

With CreateObject("scripting.filesystemobject").getfolder(FilePath)
ReDim sq(1 To 3, 1 To .Files.Count)
x = 1
    For Each fl In .Files
        If Right(fl.Name, 5) = ".xlsx" And fl.Name <> "Rapportage 2013 test(upd).xls" Then
            Filename = fl.Name
            sq(1, x) = fl.Name
            sq(2, x) = GetData(FilePath, Filename, SheetName, Address)
            sq(3, x) = GetData(FilePath, Filename, SheetName, Address2)
            x = x + 1
        End If
    Next
End With
Cells(2, 1).Resize(UBound(sq, 2), 3) = WorksheetFunction.Transpose(sq)
Columns.AutoFit
End Sub
 
Hallo Jean-Paul, Rudi,

Het werkt hartstikke goed. Ik heb de vba van Jean-Paul genomen, maar de aanpassing van Rudi voor wat excel 2007 aangaat. Ik heb hem ingebouwd in de te gebruiken bestanden en uitgebreid met een vba button die de rapportage per klant en maand veiligsteld zonder codes.
Mannen hartstikke bedankt voor jullie mooie werk.
Ik zet topic op opgelost.

Groet,
Cruimel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan