Avatar billede nikolan Nybegynder
10. marts 2008 - 11:33 Der er 6 kommentarer og
1 løsning

Samle data fra flere filer til en fil?

Hej

Jeg har ca. 100 excelfiler med de samme 10 kolonner, men med forskellige data i hver fil. Nu vil jeg gerne have samlet (stablet) data i en fil (så alle rækker bliver sat ind i samme fil). Er der en let måde at gøre det på eller skal jeg åbne hver eneste fil og copy/paste data ind i den samme fil?
Avatar billede supertekst Ekspert
10. marts 2008 - 12:54 #1
Via VBA kan det lade sig gøre automatisk - ligger filerne i samme mappe?
Avatar billede nikolan Nybegynder
10. marts 2008 - 13:39 #2
Ja det gør de.

Hvordan foregår det vha. VBA?
Avatar billede supertekst Ekspert
10. marts 2008 - 17:55 #3
Koden er indsat i en tom fil - i Ark1, kaldes Samling.xls
I den mappe, hvor denne fil ligger er der en undermappen, kaldet "Filer" - heri ligger de mange filer.
Der kopieres fra Kolonne A - J - men dette kan rettes i koden.

Hvis det kan hjælpe - kan du evt. få mine testfiler - blot mail til: pb@supertekst.it.dk

Her er koden:

Dim xSti                                            'aktuelle sti
Const arkNr = 1                                    'ark-nr, hvorfra der skal hentes
Const startRække = 1                                'begyndelsesrække i filerne, -"-
Const fraMappeNavn = "Filer"                        'undermappe med filerne

Dim samlingRække                                    'næste række for samlingsFilen
Dim samWS As Worksheet
Sub startSamling()
Rem find aktuelle sti
    xSti = findAktuelleSti
       
Rem Samlingsfilen - indsættelse af filer begynder i række 1
    Set samWS = ActiveWorkbook.Sheets("Ark1")
    samlingRække = 1
   
Rem gennemløb af filmappen
    gennemløbAfFilMappen
   
    MsgBox ("Samlingen er afsluttet")
End Sub
Private Function findAktuelleSti()
Dim sti
    sti = ActiveWorkbook.Path
    If Right(xSti, 1) <> "\" Then
        sti = sti + "\"
    End If
   
    findAktuelleSti = sti
End Function
Private Sub gennemløbAfFilMappen()
Dim fraMappe, filXLS, antalRækker, ws As Worksheet
   
    fraMappe = xSti + fraMappeNavn + "\"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(fraMappe)
    Set fc = f.Files

Rem Åbn den enkelte fil og kopier udfyldte rækker - 10 kolonner til samlingsfilen
    For Each fil In fc
        filnavn = fil.Name
        Set filXLS = CreateObject("Excel.Application")
        With filXLS
            .Workbooks.Open fraMappe + filnavn
           
            Set ws = .ActiveWorkbook.Worksheets(arkNr)
            antalRækker = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row - 1
           
Rem marker relevante område - kopier
            ws.Range("A" + CStr(startRække) + ":J" + CStr(antalRækker)).Select
            .Selection.Copy
           
Rem indsæt i samlingsfilen
            samWS.Activate
            ActiveSheet.Cells(samlingRække, 1).Select
            With Selection
                Paste
            End With
         
Rem ophæv markering
            ws.Application.CutCopyMode = False

Rem Beregn næste række i samlings-filen
            samlingRække = samlingRække + antalRækker
           
Rem Luk objektet"
            .Application.Quit
            Set filXLS = Nothing
        End With
    Next
End Sub
Avatar billede supertekst Ekspert
10. marts 2008 - 17:58 #4
Du kan evt. oprette en knap på Ark1 i samlingsfilen - der aktivere den Sub, der hedder Sub StartSamling

eller

højreklik på Ark1 i Samlingsfilen - Vis programkode - sæt markøren i den første Sub = StartSamling og tryk F5.
Avatar billede jaakko Nybegynder
19. marts 2008 - 10:47 #5
Hvis alle arkene er 100% ens opbygget kan du også løse det ved at lave en Pivot-tabel baseret på alle arkene ("Multiple consonlidated ranges"). Herved får du i øvrigt også muligheden for at analysere dine data på kryds og tværs. Måske du kender nogen med erfaring i pivot-tabeller. Det er ganske let, men meget svært at forklare kort. Derfor blot ment som et "hint", der måske kan hjælpe dig videre.
Avatar billede nikolan Nybegynder
07. april 2008 - 21:54 #6
Jeg endte med at gøre det manuelt. Det kan være jeg kigger nærmere på forslagene når jeg får tid, så hvis i vil have point så opret et svar.

jaakko - hvis jeg vælger den løsning skal jeg så ikke ind og markere området i alle mine excelfiler alligevel?
Avatar billede supertekst Ekspert
07. april 2008 - 22:50 #7
Det får du så...
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