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

Samenvoegen en selecteren van excel bestanden vanuit 1 map in 1 excel bestand

Status
Niet open voor verdere reacties.

MartiB01

Gebruiker
Lid geworden
18 mei 2016
Berichten
8
Beste iedereen,

Ik heb in 1 map allemaal maandelijkse rapportages staan. Ik wil deze graag samenvoegen in 1 Excel werkblad en heb hier de volgende code voor gevonden:
Code:
Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")
Set dirObj = mergeObj.Getfolder("[COLOR="#FF0000"]C:\Users[/COLOR]")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
ThisWorkbook.Worksheets(1).Activate
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
bookList.Close
Next
End Sub

Dit werkt goed en de macro voegt netjes de bestanden onder elkaar samen. Nu mijn vraag: kan ik in excel door middel van een aantal knoppen ook verschillende maanden zelf selecteren? De documenten in de directory bevatten een maandnaam.

Alsvast bedankt,

Martijn Beeks
 
Ja, dat kan. In dit voorbeeld kan januari.xlsx uiteraard ook een variabele zijn:
Code:
Sub simpleXlsMerger()
    Dim bookList As Workbook
    Dim mergeObj As Object
    Dim dirObj As Object
    Dim filesObj As Object
    Dim everyObj As Object
    
    Application.ScreenUpdating = False
    Set mergeObj = CreateObject("Scripting.FileSystemObject")
    Set dirObj = mergeObj.Getfolder("C:\Users")
    Set filesObj = dirObj.Files
    For Each everyObj In filesObj
        Set bookList = Workbooks.Open(everyObj)
        [COLOR="#FF0000"]If everyObj.Name = "januari.xlsx" Then[/COLOR]
            Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
            ThisWorkbook.Worksheets(1).Activate
            Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
            Application.CutCopyMode = False
            bookList.Close
        [COLOR="#FF0000"]End If[/COLOR]
    Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan