De onderstaande procedure zoekt naar bron-werkmappen (xlsx) om deze te openen en te importeren naar de doel-werkmap.
De locatie waarin gezocht wordt is relatief ten opzichte van de locatie van de doel-werkmap.
De enige voorwaarde voor het goed functioneren van deze procedure is dat zowel de bron- als de doelwerkmap dezelfde indeling hebben qua kolommen. Voor de rest is deze functionaliteit geheel dynamisch en dus niet gebonden aan een vooraf vast gesteld aantal kolommen of rijen.
'-----------------------------------------------------------------------------------------------------------------------
' Auteur : pascalterheege.nl
' Datum : 6-1-2016
' Object : modImporteer
' Doel : xlsx-bestanden uit \bron\ importeren naar huidig werkboek
' Verwijzing : Microsft Scripting Runtime
' Bron :
'-----------------------------------------------------------------------------------------------------------------------
Option Explicit
Sub importeerBestanden()
' Variabelen declareren
Dim fso As New FileSystemObject 'FSO
Dim fld As Folder
Dim f As File
Dim strLocatie As String 'Locatie
Dim wbDoel As Workbook 'Doel
Dim rngDoel As Range
Dim wbBron As Workbook 'Bron
Dim rngBron As Range
' Variabelen initialiseren
Set wbDoel = ActiveWorkbook 'Doel
strLocatie = wbDoel.Path & Application.PathSeparator _
& "Bron" & Application.PathSeparator 'Relatieve padverwijzing t.o.v. doel.xlsm
Set fld = fso.GetFolder(strLocatie)
' Schermactiviteit uitschakelen t.b.v performance
Application.ScreenUpdating = False
' Itereren door gevonden bestanden in locatie
For Each f In fld.Files
' Alleen xlsx bestanden!
If fso.GetExtensionName(f) = "xlsx" Then
' Dynamische bron range (exclusief header)
Set wbBron = Workbooks.Open(f) 'bronbestand openen
Set rngBron = wbBron.Sheets(1).Range("A1").CurrentRegion 'bronrange is huidig bereik (currentregion) t.o.v. A1
Set rngBron = rngBron.Offset(1).Resize(rngBron.Rows.Count _
- 1, rngBron.Columns.Count) 'bronrange exlusief header!
' Dynamische doel range (laatste regel + 1)
Set rngDoel = wbDoel.Sheets(1).Range("A" & wbDoel.Sheets(1) _
.Range("A" & Rows.Count).End(xlUp).Row + 1)
' Bron kopieren naar doel
rngBron.Copy Destination:=rngDoel
' Bron sluiten
wbBron.Close
End If
Next f
' Schermactiviteit aanschakelen
Application.ScreenUpdating = True
End Sub
Download hier het oefenbestand.

