Data, data, data – zonder data is een database vrijwel nutteloos. Het is dan ook geen verrassing dat een van de meest gestelde vragen over het importeren van data in je Access-tabel(len) is: hoe maak ik het mezelf makkelijker als ik regelmatig heel veel bestanden moet importeren? Omdat dit zo'n veelvoorkomende taak is, zijn er natuurlijk verschillende manieren om dit aan te pakken, maar we gaan hier kijken naar slechts één – naar mijn mening de makkelijkste – vooral als je dit regelmatig of zelfs volgens een vast schema doet. Een beetje planning (en ik bedoel echt een beetje!) en een beetje VBA-magie en je bent klaar om te beginnen – lees verder om aan de slag te gaan…
Alle Excel-bestanden in een map importeren
Voor dit artikel gaan we kijken naar het importeren van een aantal Excel-bestanden in een bepaalde map, maar je zou net zo gemakkelijk csv-bestanden enz. Kunnen importeren - we zullen binnenkort bespreken hoe je de code kunt wijzigen om csv-bestanden af te handelen.
Laten we eerst definiëren wat we willen dat de code doet:
"We willen alle bestanden uit een bepaalde map importeren in een bestaande tabel - we willen ook aangeven of de bestanden een koptekstregel hebben of niet"
Lijkt eenvoudig genoeg, dus laten we de code bekijken om dit te doen:
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Loop through the folder & import each file fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'check whether there are any more files to import fileName = Dir() Wend End Sub
Controleren op problemen ...

OK - eerste dingen eerst. Om de code zo bruikbaar mogelijk te houden in verschillende omstandigheden, vragen we naar de padnaam (waar de bestanden zijn opgeslagen), de naam van de tabel waarin je deze bestanden wilt importeren en of de bestanden in deze map allemaal een koptekst of niet (dwz verschijnen de veldnamen op de eerste rij van de spreadsheet).
U zult zien dat het deel van de code dat naar bestanden zoekt - Dir (pad & "\ *. Xls") - een jokerteken en bestandsextensie toevoegt aan het opgegeven pad. Ik noem dit omdat het heel gemakkelijk zou zijn om de code te wijzigen als je bijvoorbeeld alleen bestanden wilt importeren die overeenkomen met een bepaalde naamgevingsconventie (bijvoorbeeld alle bestanden die 'januari' of '2017' hebben als onderdeel van de bestandsnaam ). Je zou, als je dat zou willen, zelfs dat filter als parameter aan de subroutine-oproep kunnen toevoegen.
Hoe dan ook, als een bestand voldoet aan de opgegeven criteria (elk “.xls” -bestand in de map dat in dit geval de code gebruikt), probeert het onmiddellijk dat bestand te importeren met het TransferSpreadsheet-commando.
Waar u de code kunt wijzigen om aan uw behoeften te voldoen ...
Op dit punt zou u de code kunnen wijzigen zodat in plaats van een spreadsheet te importeren, het csv-bestanden importeert (met behulp van de "TransferText" -opdracht) enz.
De code wordt vervolgens herhaald totdat er geen bestanden meer in die map kunnen worden geïmporteerd.
Het is een klein stukje code, maar ik ben er zeker van dat je het steeds weer zult gebruiken!
Auteur Introductie:
Mitchell Pond is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder herstel SQL-corruptie en Excel-herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com