Avatar billede petersen7913 Forsker
29. januar 2009 - 19:05 Der er 2 kommentarer og
1 løsning

Genemsøgning af Excelfiler for at kopiere data over i ny Excelfil

Hej

Jeg er novice på Excel området, så be' om hjælp. Og pt. kender jeg iøvrigt ikke alle detaljer i opgaven ;)

Jeg har et stort antal excelfiler (2000+) som har samme struktur. Nogle af dataene skal findes frem og kopieres over i et andet excelark, så jeg ender med at have alle de ønskede data i en enkelt fil, som så bagefter skal behandles videre med et andet værktøj.

Det må kunne laves i VBA koden, men hvordan kalder man kode inde i Excel? (er sikkert meget banalt, sorry)

Jeg kan sagtens lave et loop igennem alle filerne, men hvordan får jeg åbnet den enkelte fil, søgt dataene frem og kopieret over i den nye?

Det er selvfølgelig noget der skulle ha' været færdigt i forgårs.
Avatar billede kabbak Professor
29. januar 2009 - 22:55 #1
Ligger dataene ikke samme sted i filerne ??
Avatar billede kabbak Professor
29. januar 2009 - 23:01 #2
Hvis de ligger samme sted, kan denne bruges

Public Sub HentData()
    Dim FolderName As String, I As Integer, NO As Integer, strFilnavn() As Variant
    Dim Data() As Variant, DCeller As Variant
    Dim RW As Integer, J As Integer
    DCeller = Array("C1", "C5", "F8", "D11", "E11", "F11", "D13", "E13", "F13", "J11")    ' celler der indeholder de værdier, som vi ønsker hentet
    FolderName = "C:\Data"  ' rettes til
    If Right(FolderName, 1) <> "\" Then FolderName = FolderName & "\"
    NO = 1
    ReDim Preserve strFilnavn(NO)
    strFilnavn(NO) = Dir(FolderName & "*.xls")    ' Hent den første filnavn.
    Do While strFilnavn(NO) <> ""  ' Start løkken
        If strFilnavn(NO) <> "." And strFilnavn(NO) <> ".." Then
            NO = NO + 1
            ReDim Preserve strFilnavn(NO)
        End If
        strFilnavn(NO) = Dir    ' Hent næste filnavn.
    Loop
    NO = NO - 1
    ReDim Data(NO, UBound(DCeller))
    Application.ScreenUpdating = False
    For I = 1 To NO
        Workbooks.Open Filename:=FolderName & strFilnavn(I)
        For J = 0 To UBound(DCeller)
            Data(I, J) = Worksheets("Siden der hentes fra").Range(DCeller(J))
        Next
        ActiveWorkbook.Close False
    Next I
    RW = ThisWorkbook.Worksheets("siden der gemmes på").Range("A65536").End(xlUp).Row + 1
    ThisWorkbook.Worksheets("siden der gemmes på").Range(Cells(RW, 1), Cells(RW + NO, UBound(DCeller) + 1)) = Data

    Application.ScreenUpdating = True
End Sub
Avatar billede petersen7913 Forsker
03. oktober 2010 - 17:20 #3
Jeg fik ikke opgaven :( men lukket spørgsmålet.
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