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

VBA code die uit meerdere bestanden data haalt

Status
Niet open voor verdere reacties.

Hunuloeloe

Gebruiker
Lid geworden
12 sep 2016
Berichten
311
Goedemorgen,

Op mijn werk houden ze elke week een bestand bij waarin gegevens worden ingevuld van een bepaalde werkzaamheid in cel A t/m F. Ik zou graag van deze bestanden een totaaloverzicht maken. Ik denk dat dit met een macro heel snel op te lossen is door van elk bestand de gegevens te kopiëren van de kolommen A t/m F en van rij 2 t/m laatst ingevulde. Als die dit dan onder elkaar zou kunnen zetten in een totaaloverzicht kan ik er vervolgens zelf draaitabellen mee maken.

De bestanden waar de gegevens uit gehaald moeten worden staan allemaal in een map genaamd "Intern transport"

Ik hoop dat jullie met een oplossing kunnen komen :)
 
Het zou helemaal handig zijn als deze bestanden als csv worden opgeslagen.
 
Hoi snb,

Waarom eigenlijk als ik vragen mag? bespaard het ruimte of hoe moet ik dit zien?
 
Nee, het bespaart geen ruimte, maar maakt de integratie van de bestanden eenvoudiger.
 
Het gaat om 52 (week)bestanden dus dit lijkt me veel werk om alles om te zetten. Is het mogelijk dat de code het nu vanaf rij 2 kolom A t/m F overneemt?
 
Ik zie nog helemaal geen begin van een eigen aanpak.

Schoolopdrachten zijn niet tegestaan in dit forum, pure opdrachten a fortiori evenmin.

Met een fatsoenlijk budget kun je via dit forum zo uit de brand geholpen worden.
 
Je hebt gelijk... Maar eerlijk gezegd zou ik niet weten waar ik moet beginnen en het samenvoegen van codes lijdt ook niet tot het gewenste resultaat :/
Voor een ander bestand gebruik ik deze code:
Code:
Sub SjonR()

Dim wbk As Workbook, sh As Worksheet, doel As Workbook
Set doel = ThisWorkbook
Application.ScreenUpdating = False

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        .AllowMultiSelect = False
        MyFolder = .SelectedItems(1) & "\"
    End With

MyFile = Dir(MyFolder)

Do While MyFile <> “”
Set wbk = Workbooks.Open(Filename:=MyFolder & MyFile)

    For Each sh In wbk.Sheets
        With doel.Sheets("Blad1")
            .Activate
            X = .Range("A" & Rows.Count).End(xlUp).Row + 1
            .Cells(X, 1).Value = sh.Name
            .Cells(X, 2).Value = wbk.Name
            [COLOR="#FF0000"].Cells(X, 3).Value = sh.Columns(1).Find("Aantal pallets").Offset(, 1).Value[/COLOR]
        End With
    Next
wbk.Close savechanges:=False
MyFile = Dir
Loop
Application.ScreenUpdating = True
End Sub
Ik krijg hem alleen niet goed genoeg ontcijferd zodat ik hem kan aanpassen om i.p.v. 1 cel te pakken meerdere tegelijk over te nemen. Het stukje code dat ik rood heb gemaakt moet dan ook volgens mij aangepast worden als ik het goed begrijp?
 
Ik heb nog eens een poging gewaagd... Ik heb het HelpMij forum is doorzocht naar eventuele oplossingen op mijn probleem maar ik kom wel varianten tegen maar weet niet goed hoe ik deze codes naar wens kan aanpassen. Hierdoor heb ik gekozen om bovenstaande code uit #8 aan te passen, want met bovenstaande code kan ik een bepaald gegeven uit andere bestand halen.
Met de een aanpassing van die code hoopt ik een hele range te kunnen kopiëren vanuit meerdere bestanden en samenvoegen:

Code:
Private Sub CommandButton1_Click()
Dim wbk As Workbook, sh As Worksheet, doel As Workbook
Set doel = ThisWorkbook
Application.ScreenUpdating = False

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        .AllowMultiSelect = False
        MyFolder = .SelectedItems(1) & "\"
    End With

MyFile = Dir(MyFolder)

Do While MyFile <> “”
Set wbk = Workbooks.Open(Filename:=MyFolder & MyFile)

    For Each sh In wbk.Sheets
        With doel.Sheets("Blad1")
            .Activate
            Range(A1:H100).Copy
        End With
    Next
wbk.Close savechanges:=False
MyFile = Dir
Loop
Application.ScreenUpdating = True
End Sub

Maar hier:
Code:
Range(A1:H100).Copy
krijg ik compileerfout: syntaxisfout

Iemand die mij de goede richting in weet te helpen?
 
probeer dit eens ipv
Code:
Range(A1:H100).Copy

Code:
Range([COLOR="#B22222"]"[/COLOR]A1:H100[COLOR="#B22222"]"[/COLOR]).Copy

of, als het aansluitende cellen betreft:

Code:
Range("A1)".Currentregion.Copy
 
Als je Excel 2016 hebt (of als je het gratis PowerQuery downloadt en installeert) is er een makkelijkere oplossing dan VBA: Ophalen en transformeren (gegevens tabje) gebruiken.
 
Beide dank voor de reactie!

Aangezien de oplossing van Jan Karel een makkelijk bruikbare methode is denk ik dat ik hiervoor ga. Ik ga even kijken wat mogelijk is hiermee.
In ieder geval bedankt voor het meedenken :)
 
Haije

Ik wil het toch graag met VBA aanpakken omdat ik hier in de toekomst veel mee verwacht te werken. Ik heb de code even aangepast aan hetgeen wat jij zei, maar dan kopieert die alleen het bereik uit de werkmappen maar hij plakt ze niet :(
Nu heb ik de code aangepast naar dit:
Code:
Private Sub CommandButton1_Click()
Dim wbk As Workbook, sh As Worksheet, doel As Workbook
Set doel = ThisWorkbook
Application.ScreenUpdating = False

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        .AllowMultiSelect = False
        MyFolder = .SelectedItems(1) & "\"
    End With

MyFile = Dir(MyFolder)

Do While MyFile <> “”
Set wbk = Workbooks.Open(Filename:=MyFolder & MyFile)

    For Each sh In wbk.Sheets
        With doel.Sheets("Blad1")
            .Activate
            Range("A1:H100").Copy
            [COLOR="#FF0000"]Range("A1:H100").Paste[/COLOR]
        End With
    Next
wbk.Close savechanges:=False
MyFile = Dir
Loop
Application.ScreenUpdating = True
End Sub

Maar dan krijg ik bij het roodgekleurde een fout
 
PowerQuery trekt gewoon alle bestanden uit de map naar binnen.

Het moet woden:

Code:
.Paste .Range("A1")
 
Dankjewel Jan Karel!

PS
De PowerQuery optie werkte ook ;)
Bedankt voor het reageren :)
 
VBA is prachtig en ik doe er heel veel mee, maar voor mensen die niet sterk zijn in VBA is PowerQuery gewoon veel simpeler te leren.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan