Avatar billede Gramstrup Mester
24. juli 2013 - 12:22 Der er 1 løsning

Samle flere filer med VBA "

Jeg er i gang med at lave en overbliks fil hvor der skal samles flere CSV filer i en fil. Jeg har fået lavet nedenstående Kode:

Sub SamleFiler()
    Dim path            As String
    Dim FileName        As String
    Dim LastCell        As Range
    Dim Wkb            As Workbook
    Dim ws              As Worksheet
    Dim ThisWB          As String
   
    Dim sysXLS, tabel As Variant, ræk As Long, k As Long, antalKolonner As Long, antalK As Integer
    Dim linje As String
   
    Set sysXLS = ActiveWorkbook
    ræk = 1
   
    ThisWB = ThisWorkbook.Name
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    path = "G:\Afdeling\Salg\Klas\LOGISTIK"
   
    FileName = Dir(path & "\*.csv", vbNormal)
    Do Until FileName = ""
        If FileName <> ThisWB Then
            Open path & "\" & FileName For Input As #1
           
            While Not EOF(1)
                Line Input #1, linje
               
                tabel = Split(linje, ";")
                antalK = UBound(tabel)
               
                For k = 1 To antalK
                    sysXLS.Sheets(1).Cells(ræk, k) = tabel(k - 1)
                Next k
                ræk = ræk + 1
            Wend
            Close #1
        End If
        sysXLS.Sheets(1).Columns.AutoFit
        FileName = Dir()
    Loop
    Application.EnableEvents = True
    Application.ScreenUpdating = True
   
    Set Wkb = Nothing
    Set LastCell = Nothing
   
    Set sysXLS = Nothing
End Sub

Og den virkede fint da der var 9 kolonner, nu er der så kommet to ekstra kolonner på og så kommer kun overskriften med fra den sidste kolonne ikke indholdet.
Er der nogen der kan hjælpe med at justere den så den virker?
Der arbejdes i excel 2007
Avatar billede supertekst Ekspert
24. juli 2013 - 13:18 #1
Årsagen er at der i overskriften afsluttes med ; - men det er der ikke i detaillinjerne.

Sub SamleFiler()
    Dim path            As String
    Dim FileName        As String
    Dim LastCell        As Range
    Dim Wkb            As Workbook
    Dim ws              As Worksheet
    Dim ThisWB          As String
   
    Dim sysXLS, tabel As Variant, ræk As Long, k As Long, antalKolonner As Long, antalK As Integer
    Dim linje As String, firstFlag As Boolean
   
    Set sysXLS = ActiveWorkbook
    ræk = 1
   
    ThisWB = ThisWorkbook.Name
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    path = "G:\Afdeling\Salg\Klas\LOGISTIK"
    firstFlag = False
   
    FileName = Dir(path & "\*.csv", vbNormal)
    Do Until FileName = ""
        If FileName <> ThisWB Then
            Open path & "\" & FileName For Input As #1
           
            While Not EOF(1)
                Line Input #1, linje
               
                tabel = Split(linje, ";")
               
                If firstFlag = False Then
                    antalK = UBound(tabel)
                    firstFlag = True
                End If
               
                For k = 1 To antalK
                    sysXLS.Sheets(1).Cells(ræk, k) = tabel(k - 1)
                Next k
                ræk = ræk + 1
            Wend
            Close #1
        End If
        sysXLS.Sheets(1).Columns.AutoFit
        FileName = Dir()
    Loop
    Application.EnableEvents = True
    Application.ScreenUpdating = True
   
    Set Wkb = Nothing
    Set LastCell = Nothing
   
    Set sysXLS = Nothing
End Sub
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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