Avatar billede Lars Mester
22. september 2017 - 08:07 Der er 5 kommentarer og
2 løsninger

Import af .csv filer

Hej
Hvis jeg eks.vis har 3 .csv filer med hver deres navn i den samme mappe hvordan kan man så via VBA importere disse så de kommer til at blive samlet i en excel fil ?

Jeg en mappe (sti kan variere  efter hvornår og hvem der laver det) med navn "Udtraek" der i ligger 3 .csv filer med hver deres navn (navnet kan variere efter hvornår og hvem der laver det) der er samme struktur på data i .csv filerne men blot forskelluge navne på arket.
Så hvordan laver jeg et "Samlerark" hvor .csv filer i en aktuel mappe bliver importeret/samlet i et excel ark...
Avatar billede jkrons Professor
22. september 2017 - 10:17 #1
Avatar billede Lars Mester
22. september 2017 - 11:01 #2
Hej
Mange tak for det sendte link - jeg prøvede lige med denne: ImportCSVsWithReference
og det ser ud til at virke men hvor sætter jeg, at den skal importere som semikolonsep fil så den selv splitter data op i kolonnerne.
LKS
Avatar billede ebea Ekspert
22. september 2017 - 11:07 #3
#2  -  Inde i VBA delen, sætter du den ønskede separator, som =True, istedet for =False
Avatar billede Lars Mester
22. september 2017 - 11:37 #4
Hvor sætter jeg den i den omtalte VBA kode ?

Sub ImportCSVsWithReference()
'UpdatebyKutoolsforExcel20151214
    Dim xSht  As Worksheet
    Dim xWb As Workbook
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    Set xSht = ThisWorkbook.ActiveSheet
    If MsgBox("Clear the existing sheet before importing?", vbYesNo, "Kutools for Excel") = vbYes Then xSht.UsedRange.Clear
    Application.ScreenUpdating = False
    xFile = Dir(xStrPath & "\" & "*.csv")
    Do While xFile <> ""
        Set xWb = Workbooks.Open(xStrPath & "\" & xFile)
        Columns(1).Insert xlShiftToRight
        Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
        ActiveSheet.UsedRange.Copy xSht.Range("A" & Rows.Count).End(xlUp).Offset(1)
        xWb.Close False
        xFile = Dir
    Loop
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox "no files csv", , "Kutools for Excel"
End Sub
Avatar billede ebea Ekspert
22. september 2017 - 12:29 #5
#4  -  Det jeg fik svaret på i #3, var i forhold til en TXT fil (som jo skal separeres).
Men med dine CSV filer, så burde de jo være korrekt separerede, inden du hiver dem ind, og lande korrekt i kolonner.
I det Linkede eksempel, kan du så vælge placeringsmæssigt (retning), i de 2 versioner til CSV fler fil's import
Avatar billede Lars Mester
22. september 2017 - 13:11 #6
Hej Ebea
Det er det jeg ikke lige kan gennemskue i ovennævnte VBA-kode - når den køres og jeg peger på mappen med filerne så bliver data lagt i 3 kolonner selv om csv filen er opdelt i 8.
Når jeg gør det manuelt så bliver det opdelt korrekt.... så hvor i koden kan jeg justere - gerne løsning
Avatar billede claes57 Ekspert
22. september 2017 - 14:16 #7
Man kan lave et vbs script, der finder de tre filer i mappe, samler dem til én, og navngiver den med et fast navn og placering. De tre originaler kan evt slettes herefter i samme script.
I Excel er der så kun en fast fil, der skal hentes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester