Avatar billede Gramstrup Mester
22. juli 2013 - 08:12 Der er 2 kommentarer og
1 løsning

Samle flere filer til en med VBA

Hver dag laver vores system en CSV fil med en kostrapport, En gang om måneden har jeg behov for at slå hele månedens kostrapport sammen til en lang rapport som jeg så kan lave en pivotabel som jeg kan arbejde videre med. Alle filer som skal slåes sammen lægger i den samme mappe.
Jeg har forsøgt mig med nedenstående VBA men den virker ikke optimal.

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
   
    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
            Set Wkb = Workbooks.Open(FileName:=path & "\" & FileName)
            For Each ws In Wkb.Worksheets
                Set LastCell = ws.Cells.SpecialCells(xlCellTypeLastCell)
                If LastCell.Value = "" And LastCell.Address = Range("$A$1").Address Then
                Else
                    ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                End If
            Next ws
            Wkb.Close False
        End If
        FileName = Dir()
    Loop
    Application.EnableEvents = True
    Application.ScreenUpdating = True
   
    Set Wkb = Nothing
    Set LastCell = Nothing
End Sub

Den sætter hvert ark ind for sig selv og da tallene kommer fra en CSV fil står de ikke rigtigt i cellerne.
Jeg har behov for at de står rigtigt og at alle tallene står under hinanden.
Er der nogen som har en god løsning på dette?

I CSV filen er der altid 9 kolonner og et varierende antal rækker.
Avatar billede supertekst Ekspert
22. juli 2013 - 09:10 #1
Prøv at sende en CSV-fil - så ser jeg på det.
@-adresse under min profil
Avatar billede MadsHaupt Juniormester
22. juli 2013 - 14:32 #2
Jeg ved ikke noget om excel, men jeg ved hvordan man kan få alle filer i mappe og sætte indholdet sammen.

Kode:

Dim dir As New System.IO.DirectoryInfo(path);
Dim str As String = ""
For Each file As System.IO.FileInfo In dir.GetFiles
        If file.Extension.ToLower = ".csv" Then
                str &= file.OpenText.ReadToEnd & vbNewLine
        End If
Next
Avatar billede supertekst Ekspert
23. juli 2013 - 11:02 #3
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
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