Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketVBA importere csv filer

 Besvar Besvar
Forfatter
Jyde73 Se dropdown
Forum Begynder
Forum Begynder


Medlem: 06.Mar.2019
Land: Danmark
Status: Offline
Point: 23
Direkte link til dette indlæg Emne: VBA importere csv filer
    Sendt: 20.Jun.2019 kl. 22:27
Hej *

Jeg har kopieret en VBA kode, som skal samle mange csv filer i en excel fil fra en mappe. Der er en lille krølle ved det. Hver csv fil har sit unikke navn, dette navn bør sættes ind i kolonne A, kolonne B og C har data.

Jeg fandt som sagt dette link/kode: Passer egemtlig perfekt....men


... når jeg køre koden, så opstår der en fejl. Jeg er ny i VBA og håber der er en, som kan hjælpe og forklare hvad jeg gør forkert. Jeg har tidligere fået super hjælp her i forummet.

Mvh
Bjarne


Til top



Til top
Jyde73 Se dropdown
Forum Begynder
Forum Begynder


Medlem: 06.Mar.2019
Land: Danmark
Status: Offline
Point: 23
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 22.Jun.2019 kl. 17:59
Hej Peter

Tusinde, tusinde tak for din viden og hjælpsomhed Smile

Super med power query, virker fint. Jeg fik aldrig VBA koden til at virke, men nu kører det hele med PQ og så din "gamle" kode med 0101 Smile

Så nu spiller det hele - mange mange tak.

Rigtig god lørdag aften.

Mvh
Bjarne
Til top
SpillOperator Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 30.Maj.2019
Status: Offline
Point: 73
Direkte link til dette indlæg Sendt: 20.Jun.2019 kl. 22:36
Hej Bjarne,

Svarer værdien af variablen csvFolder - jf kommentaren i fjerde kodelinje - med stien til den mappe, hvor du har dine cvsv filer?

Bedste hilsner
Peter



Til top
Jyde73 Se dropdown
Forum Begynder
Forum Begynder


Medlem: 06.Mar.2019
Land: Danmark
Status: Offline
Point: 23
Direkte link til dette indlæg Sendt: 20.Jun.2019 kl. 22:55
Hej igen Peter Smile

Uhmm, jeg har lavet en mappe c:\csvfiles\
I den har jeg 3 csv filer.
Skal den "nye" fil have en ny destination/ny mappe, eller?
Er lidt usikker på hvad du mener med værdien af variablen csvFolder?

På forhånd tak.
Mvh
Bjarne


Til top
SpillOperator Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 30.Maj.2019
Status: Offline
Point: 73
Direkte link til dette indlæg Sendt: 20.Jun.2019 kl. 23:47
Så prøv at slette ThisWorkbook.Path fra 4.øverste kodelinje, så der blot står:

csvFolder = "c:\csvfiles\"

Prøv at se om det ændrer noget...
Til top
Jyde73 Se dropdown
Forum Begynder
Forum Begynder


Medlem: 06.Mar.2019
Land: Danmark
Status: Offline
Point: 23
Direkte link til dette indlæg Sendt: 21.Jun.2019 kl. 09:00

Her er de 3 filer som jeg bruger til test.

Har prøvet at ændre, men nu bliver koden ikke kørt og der kommer ikke nogen fejl. Uhmmm.
Gad vide hvad jeg gør forkert?





Public Sub ImportAllCSV()

    Dim FName As Variant, r As Long
    Dim destCell As Range
    Dim csvFolder As String
   
    csvFolder = "c:\csvfiles\"       'CHANGE THIS FOLDER PATH
    If Right(csvFolder, 1) <> "\" Then csvFolder = csvFolder & "\"
   
    With ActiveSheet
        r = .UsedRange.Row + .UsedRange.rows.Count
        Set destCell = .Cells(r, "B")
    End With
   
    FName = Dir(csvFolder & "*.csv")
    Do While FName <> ""
        r = ImportCsvFile(csvFolder & FName, destCell)
        destCell.Offset(0, -1).Resize(r, 1).Value = FName
        Set destCell = destCell.Offset(r, 0)
        FName = Dir
    Loop
   
End Sub


Private Function ImportCsvFile(FileName As String, Position As Range) As Long
    With Position.Parent.QueryTables.Add(Connection:="TEXT;" & FileName, Destination:=Position)
        .Name = Replace(FileName, ".csv", "")
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlMacintosh
        .TextFileStartRow = 2
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = ";"
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
        ImportCsvFile = .ResultRange.rows.Count
        .Delete
    End With
End Function

Til top
SpillOperator Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 30.Maj.2019
Status: Offline
Point: 73
Direkte link til dette indlæg Sendt: 21.Jun.2019 kl. 23:11
Hej igen Bjarne,

Koden virker fint når jeg tester den, hvis jeg kopierer stien til mappen med csv-filerne fra Windows Explorer.

Selv foretrækker jeg dog normalt at bruge Power Query frem for vba, hvis det handler om at importere csv-filer.

Her er et eksempel der kombinerer alle dine tre csv-filer i et ark, med filnavnet i kolonne A og værdierne i de øbrige kolonner. Ved ikke om det er noget i den stil du søger, men det er ret nemt at variere slutresultatet. Og man skal blot opdatere data for at får nye/ændrede csv-filer med. Jeg har lavet video for at vise fremgangsmåden - den varer lidt under et minut: http://somup.com/cq1rYRn8Fo

Bedste hilsner

Peter
Til top
Jyde73 Se dropdown
Forum Begynder
Forum Begynder


Medlem: 06.Mar.2019
Land: Danmark
Status: Offline
Point: 23
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 22.Jun.2019 kl. 17:59
Hej Peter

Tusinde, tusinde tak for din viden og hjælpsomhed Smile

Super med power query, virker fint. Jeg fik aldrig VBA koden til at virke, men nu kører det hele med PQ og så din "gamle" kode med 0101 Smile

Så nu spiller det hele - mange mange tak.

Rigtig god lørdag aften.

Mvh
Bjarne
Til top
SpillOperator Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 30.Maj.2019
Status: Offline
Point: 73
Direkte link til dette indlæg Sendt: 23.Jun.2019 kl. 23:03
Godt at høre Smile
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk