24. december 2013 - 14:41
Der er
1 løsning
Opret navnet fra den importerede fil i tabellen i Access
Jeg har en stribe csv filer som jeg skal have importeret til access, alle filerne har samme struktur og forskellig filnavn.
jeg vil gerne have dem importeret så filnavnet fra csv filens navn kommer med i tabellen i access.
Er der en som kan hjælpe med det?
Glædelige jul
/Erik
25. december 2013 - 11:33
#1
Der skal anvendes en vba rutine for at loope gennem filerne. Det hele beskrives lettest ved at vælge nogle konkrete navne.
1. Importering til midlertidig tabel, kaldet tmpimp, vha import guiden. Det er blot en enkelt csv fil der skal importeres med følgende formål:
* Få lavet tabelstrukturen der kan importeres til.
* Få gemt en import deklaration - kald den ligeledes tmpimp. Det kan være vigtigt med en import deklaration - ting som kommatal kan kræve at man angiver felttype. Det er de fjerneste afkroge af importguiden man her skal ned i!
2. check at det virker, ved i vba immediate vinduet at udføre noget der ligner:
docmd.TransferText acImportDelim,"tmpimp","tmpimp","c:\csvmappen\minfil.csv",false
Prøv med flere csv filer for at se om noget konflikter.
3. Lav den endelige tabel, kaldet csvimp, således:
* kopier tmpimp til csvimp
* open csvimp i design og tilsæt testfeltet: filnavn
* tilsæt evt. et id felt af typen autonumber.
4. Kald følgende - bemærk at konkrete feltnavne specielt for din tabel måske skal anvendes - konstruer og test sql'en først som forespørsel i database vinduets forespørgsel fane.
Sub impcsvfiles()
Dim fileN
Const path = "c:\csvmappen\"
fileN = Dir(path & "*.csv")
While Len(fileN)
CurrentDb.Execute "delete from tmpImp"
DoCmd.TransferText acImportDelim, "tmpimp", "tmpimp", path & fileN, False
CurrentDb.Execute "insert into csvimp select " & split(fileN, ".")(0) & " as filename,* from tmpimp"
fileN = Dir()
Wend
End Sub