Access voor automatische import CSV; gekoppeld Excel voor de weergave
Naar aanleiding van een vraag van een klant heb ik een Access database gemaakt dat automatisch een CSV bestand importeert. Voorwaarde was ook dat dit CSV bestand automatisch opnieuw geïmporteerd wordt als dit bestand vernieuwd wordt.Hoe ziet deze code er globaal uit?
De timer
Bij het laden van een formulier kunnen we instellen om de hoeveel tijd (in milliseconden) code moet worden uitgevoerd.Sub Form_Load()
Me.TimerInterval = 1000 'in milliseconden
End Sub
Vervolgens kunnen we dan de code schrijven voor de Timer gebeurtenis van een formulier.
Sub Form_Timer()
'hier komt de code
End Sub
Deze code gaan we nu behandelen.
Verzamelen namen CSV bestanden
Met behulp van het FileSystemObject heb ik de namen en de datum van laatste wijziging van de CSV bestanden in een map opgeslagen in een Access tabel:'tabel csv legen om steeds de actuele stand te hebben
set db = CurrentDb
db.Execute ("delete from tblcsvfiles")
'map database
strMapCSV = CurrentProject.Path & "\" 'om het huidige pad te bepalen
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(strMapCSV)
For Each f1 In f.files
If Right(f1.Name, 3) = "csv" Then
strSQL = "insert into tblCSVfiles (CSVnaam, CSVgrootte,CSVdatum) "
strSQL = strSQL & " VALUES ('" & Replace(f1.Name, "'", "`") & "'," & _
f1.Size & ", #" & f1.DateLastModified & "#)"
db.Execute (strSQL)
End If
Next
Bestanden importeren en/of vernieuwen
Met een SQL string bepalen we wat het nieuwste CSV bestand is.strSQL = " SELECT TOP 1 CSVnaam FROM tblCSVfiles ORDER BY CSVdatum DESC;"
Set rs = db.OpenRecordset(strSQL)
We maken het bestand waar de gegevens in geïmporteerd moet worden eerst leeg en importeren vervolgens de gegevens:
strBestand = rs.fields("CSVnaam").Value
DoCmd.TransferText transfertype:=acImportDelim, _
SpecificationName:="glans", _
tablename:="tblGlans", _
FileName:=strMapCSV & strBestand, _
hasfieldnames:=False
SpecificationName
In deze code is de SpecificationName van groot belang. Deze naam moeten we zelf maken. We kunnen dit alleen doen door het bestand éénmalig handmatig te importeren en dan deze importspecificatie op te slaan.Bij het importeren van een tekstbestand in Access krijgen we dit venster:
Als we dan op de knop Geavanceerd drukken, krijgen we:
Door te klikken op Opslaan als kunnen we de Importspecificatie opslaan. Via de knop Specificaties krijgen we eventuele gegeven namen te zien.
Reacties