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

100 excel bestanden samenvoegen in 1 werkmap

Status
Niet open voor verdere reacties.

wieckbud

Gebruiker
Lid geworden
26 jun 2011
Berichten
16
Goedemorgen, ik heb meer dan 100 excel bestanden met dezelfde indeling.
Nu wil ik deze samenvoegen naar 1 bestand met 1 tabblad. Ik heb al ergens een macro gevonden om het samen te voegen maar hierbij maakt hij voor elk bestand een aparte tabblad aan.
Ik zou dus als eindresultaat 1 lange lijst willen hebben.
 
da's wel heel weinig info als je wilt geholpen worden. Staan die bestanden allemaal in dezelfde map?
 
Zo iets:

Code:
Dim bookList As Workbook
Dim dirObj As Object, filesObj As Object, everyObj As Object
Dim y As Long, x As Long, z As Long
Application.ScreenUpdating = False
Set dirObj = CreateObject("Scripting.FileSystemObject").Getfolder("C:\users\hsv\desktop\Testmap")  'aanpassen
Set filesObj = dirObj.Files
  For Each everyObj In filesObj
             y = y + 1
    If y Mod 4 = 1 Then x = x + 1
  Set bookList = Workbooks.Open(everyObj)
  ThisWorkbook.Sheets(x).Cells(3, 1).Offset(, z).Resize(ActiveWorkbook.Sheets(1).Cells(1).CurrentRegion.Rows.Count, 5) = ActiveWorkbook.Sheets(1).Cells(1).CurrentRegion.Offset(1).Value
             z = IIf(z = 18, 0, z + 6)
  bookList.Close
 Next
 
heb een voorbeeldbestand gemaakt, hoe zet ik die bij het bericht?
 
volgens mij zo
Bestanden staan allemaal in dezelfde map en hebben dezelfde indeling
 

Bijlagen

Laatst bewerkt:
Zijn het oorspronkelijk geen csv/txt bestanden ?
 
Dat maakt zeker uit. Met een simpele DOS opdracht kan je al die bestanden samenvoegen tot 1 bestand. Dan hoef je nog maar 1 bestand om te zetten naar excel.

Vanuit de juiste map : Copy *.csv temp.csv
 
Dat maakt zeker uit. Met een simpele DOS opdracht kan je al die bestanden samenvoegen tot 1 bestand. Dan hoef je nog maar 1 bestand om te zetten naar excel.

Vanuit de juiste map : Copy *.csv temp.csv

Die csv bestanden kan ik niet meer gebruiken, zijn niet meer up to date. Moet dus echt alle excel bestanden samenvoegen
 
Zo iets:

Code:
Dim bookList As Workbook
Dim dirObj As Object, filesObj As Object, everyObj As Object
Dim y As Long, x As Long, z As Long
Application.ScreenUpdating = False
Set dirObj = CreateObject("Scripting.FileSystemObject").Getfolder("C:\users\hsv\desktop\Testmap")  'aanpassen
Set filesObj = dirObj.Files
  For Each everyObj In filesObj
             y = y + 1
    If y Mod 4 = 1 Then x = x + 1
  Set bookList = Workbooks.Open(everyObj)
  ThisWorkbook.Sheets(x).Cells(3, 1).Offset(, z).Resize(ActiveWorkbook.Sheets(1).Cells(1).CurrentRegion.Rows.Count, 5) = ActiveWorkbook.Sheets(1).Cells(1).CurrentRegion.Offset(1).Value
             z = IIf(z = 18, 0, z + 6)
  bookList.Close
 Next

Heb nu onderstaande gedaan, hij zet ze nu wel bij elkaar maar naast elkaar en niet onder elkaar

Sub VoegSamen()
Dim bookList As Workbook
Dim dirObj As Object, filesObj As Object, everyObj As Object
Dim y As Long, x As Long, z As Long
Application.ScreenUpdating = False
Set dirObj = CreateObject("Scripting.FileSystemObject").Getfolder("C:\Users\Wieckbud\Desktop\Looplijsten 2") 'aanpassen
Set filesObj = dirObj.Files
For Each everyObj In filesObj
y = y + 1
If y Mod 4 = 1 Then x = x + 1
Set bookList = Workbooks.Open(everyObj)
ThisWorkbook.Sheets(x).Cells(3, 1).Offset(, z).Resize(ActiveWorkbook.Sheets(1).Cells(1).CurrentRegion.Rows.Count, 5) = ActiveWorkbook.Sheets(1).Cells(1).CurrentRegion.Offset(1).Value
z = IIf(z = 18, 0, z + 6)
bookList.Close
Next
End Sub
 
Je moet ook de code uit #3 gebruiken.

Code:
Sub VoegSamen()
  For Each Br In Split(CreateObject("Wscript.Shell").Exec("cmd /c dir ""[COLOR="#FF0000"]C:\Users\Wieckbud\Desktop\Looplijsten 2\[/COLOR]*.xls[COLOR="#FF0000"]x[/COLOR]"" /b/s").StdOut.ReadAll, vbCrLf)
     With GetObject(Br)
       with  .Sheets(1).Cells(1).CurrentRegion.Offset(1)
        ThisWorkbook.Sheets("[COLOR="#FF0000"]Blad1[/COLOR]").Cells(Rows.Count, 1).End(xlUp).Offset(1).resize(.rows.count,.columns.count)=.Value
       end with
       .Close 0
     End With
  Next
End Sub
 
Laatst bewerkt:
Ik geef het maar op, nu stopt hij weer na een bestand of 20 helaas. Hij zet het wel onder elkaar.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan