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

Bestanden samenvoegen

Status
Niet open voor verdere reacties.

Jeneroy

Gebruiker
Lid geworden
23 jul 2018
Berichten
106
Hallo,

Kan iemand mij helpen.

Ik gebruik deze macro voor het samenvoegen van meerdere excel files. Het werkt prima bij minder dan 10 bestanden.

Ik heb deze gebruikt voor het samenvoegen van ongeveer 120 bestanden maar hij stopt voordat deze klaar is. De macro file wordt dan afgesloten.

Hoe kan ik dit oplossen

Alvast bedankt

Code:
Sub VoegExcelBestandenSamenIn1NieuwBlad()
' [TOPIC=848630///][NOHTML][rml][ Excel] Meerdere bestanden samenvoegen[/rml][/NOHTML][/TOPIC]
' deel 2

Dim wbSingleWorkbook As Excel.Workbook, wbFinalWorkbook As Excel.Workbook
Dim wsSingleSheet As Excel.Worksheet, wsFinalSheet As Excel.Worksheet
Dim strPath As String, strWorkbook(500) As String ' max 500 bestanden
Dim intCounter As Integer, n As Integer
Dim Answer As VbMsgBoxResult

    strPath = "A:\Afdelingen\ "        ' Map met .xlsx-bestanden
    intCounter = 1              ' teller
    strWorkbook(intCounter) = Dir(strPath & "*.xlsx")
     
    Do While strWorkbook(intCounter) <> ""
     
        intCounter = intCounter + 1
        strWorkbook(intCounter) = Dir
         
    Loop
     
    intCounter = intCounter - 1 ' want de laatste is leeg
    Set wbFinalWorkbook = Workbooks.Add
    Application.DisplayAlerts = False
     
    Do While wbFinalWorkbook.Sheets.Count > 1
     
        wbFinalWorkbook.Sheets(1).Delete
     
    Loop                        ' We hebben maar 1 blad nodig
     
    Application.DisplayAlerts = True
    Set wsFinalSheet = wbFinalWorkbook.Sheets(1)
         
    On Error GoTo Einde         ' Error trapping AAN
     
    For n = 1 To intCounter
     
        Set wbSingleWorkbook = Workbooks.Open(Filename:=strPath _
            & strWorkbook(n), ReadOnly:=False) '
     Application.DisplayAlerts = False
    'Application.ActiveProtectedViewWindow.Edit
   If ActiveWorkbook.MultiUserEditing Then
 ActiveWorkbook.ExclusiveAccess
End If

    
    
    
            
    ActiveSheet.Unprotect Password:="12345"
            
     Application.DisplayAlerts = False
    Sheets(Array("blad2", "blad3", "blad4")).Select
    Sheets("blad4").Activate
    ActiveWindow.SelectedSheets.Delete
    Range("N1").Select
       Sheets("blad1").Select
    ActiveSheet.Range("$A$6:$AQ$10000").AutoFilter Field:=4, Criteria1:=">0", _
        Operator:=xlAnd
    ActiveSheet.ShowAllData

     Rows("1:5").Select    Selection.Delete Shift:=xlUp
    
    
             
        For Each wsSingleSheet In wbSingleWorkbook.Sheets
             
            wsSingleSheet.UsedRange.Copy _
                Destination:=wsFinalSheet.Cells _
                (wsFinalSheet.Cells.SpecialCells _
                (xlCellTypeLastCell).Row + 1, 1)
             
        Next wsSingleSheet

        wbSingleWorkbook.Close
     
    Next n
     
    On Error GoTo 0             ' Error trapping UIT
     
Einde:

    Select Case Err.Number      ' Foutmelding 1004 is
                                ' hoogstwaarschijnlijk veroorzaakt
        Case 1004               ' door iets te plakken dat boven
                                ' de 65536 rijen uit zou komen
            Answer = MsgBox(Err.Description & Chr(13) & Chr(13) & _
                "Waarschijnlijk wordt dit bestand te groot..." & _
                Chr(13) & "Verder gaan op nieuw blad?", _
                vbCritical Or vbYesNo, "Error " & Err.Number & _
                ": " & Err.Description)
             
            If Answer = vbYes Then
             
                Set wsFinalSheet = wbFinalWorkbook.Sheets.Add
                Resume
                 
            End If
             
        Case 0                  ' Niks aan 't handje :-)
             
        Case Else               ' Overige foutmeldingen
         
            MsgBox Err.Description, _
                vbCritical Or vbOKOnly, "Error " & Err.Number & _
                " in bestand " & n
     
    End Select
     
    Set wbSingleWorkbook = Nothing
    Set wbFinalWorkbook = Nothing
    Set wsSingleSheet = Nothing
    Set wsFinalSheet = Nothing
    
      MyName = Range("A1").Value & "File samengevoegd" & Range("A1").Value
    ChDir "A:\Afdelingen\"
   ActiveWorkbook.SaveAs Filename:=MyName & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 
Laatst bewerkt:
Gebruik geen 'select' of 'activate' in VBA

Plaats een voorbeeldbestand.
Hebben alle Excelbestanden dezelfde struktuur ?
Hoeveel werkbladen heeft ieder Excelbestand ?
Hoeveel rijen met gegevens bevat ieder besdtand ?
Zie af van 'beveiligde' bestanden; daar hebben jij, Excel en VBA aleen maar last van.

Heb je deze code zelf geschreven ?
Wat is je VBA nivo ?
 
Laatst bewerkt:
Gebruik geen 'select' of 'activate' in VBA

Plaats een voorbeeldbestand.
Hebben alle Excelbestadnen dezelfde struktuur ?
Hoeveel werkbladen heeft ieder Excelbestand ?
Hoeveel rijen met gegevens bevat ieder besdtand ?
Zie af van 'beveiligde' bestanden; daar hebben jij, Excel en VBA aleen maar last van.

Heb je deze code zelf geschreven ?
Wat is je VBA nivo ?

Hallo,
Bedankt voor de snelle reactie. Hieronder mijn antwoord

Plaats een voorbeeldbestand.

Ik heb een voorbeeldbestand bijgevoegd.Bekijk bijlage voorbeeldbestand.xlsx


Hebben alle Excelbestadnen dezelfde struktuur ?
Ja de excel bestanden hebben dezelfde structuur

Hoeveel werkbladen heeft ieder Excelbestand ?

Iedere file heeft 4 tabbladen . Maar ik wil alleen blad1 samenvoegen

Hoeveel rijen met gegevens bevat ieder besdtand ?
De bestanden bevatten tussen 1 en 1000 rijen

Zie af van 'beveiligde' bestanden; daar hebben jij, Excel en VBA aleen maar last van.
Helaas zijn dat allemaal beveiligde bestanden uit sharepoint.

Heb je deze code zelf geschreven ?
Deze code heb ik niet zelf geschreven maar gevonden op internet en zelf aangepast

Wat is je VBA nivo ?
Mijn kennenis op het gebied van VBA is beperkt (basis)

Alvast bedankt
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan