Forbedring af Visual Basic programmering - import mange csv filer
HejJeg har engang fået lavet en visual Basic programmering her på eksperten.dk - og det fungerer super fint.
De rådata jeg arbejder med har nu ændret sig lidt - og så kunne jeg godt tænke min om nogen kunne hjælpe med at forbedre den kode jeg har nu?
Mine rådata i dag består en en masse informationer i starten af hver fil - og dem er jeg reelt ikke intresseret i for at lave kurver af selve rådataen.
Så hvis der er nogen der kan hjælpe mig med at lave en programmering, så jeg kan bestemme hvilken række data jeg skal starte med at hente data ind fra - vil det være super fint.
Det er fint med mig at jeg skal rette værdien i selv Visual Basic koden.
fx. Jeg har 20 filer med data jeg gerne vil se alle rådata på. I hver fil står den en bunke informationer i de første 25 linier - og mine rådata starter så først i linie 26. Så vil jeg gerne kunne taste tallet 26 - og så starte koden med at hente data i alle filerne i række 21 - og samler det hele i et regneark lige under hinanden.
Håber jeg har gjort mig forståelig nok - eller så spørge endelig.
Mvh
Jens Frederik
Her er koden jeg har nu:
Public Sub HentData()
' Værtøj til at hente rådata fra Kapabilitetsundersøgelser
' Rådata hentes ind i det samme regneark
' Dimensionering af variabler
Dim strFilNavn() As String, NO As Integer, I As Integer, RW As Long, Sdata As Variant
Dim Linie(4) As String, Data As String, Sti As String
NO = 1
' Skriv navnet på den sti hvor dine rådata findes
Sti = "d:\prstand sammenlinge data\"
' Start makroen ved at taste F5
ReDim Preserve strFilNavn(NO)
strFilNavn(NO) = Dir(Sti & "*.CSV") ' Hent den første filnavn.
Do While strFilNavn(NO) <> "" ' Start løkken
If strFilNavn(NO) <> "." And strFilNavn(NO) <> ".." Then
NO = NO + 1
End If
ReDim Preserve strFilNavn(NO)
strFilNavn(NO) = Dir ' Hent næste filnavn.
Loop
NO = NO - 1
For I = 1 To NO
Open Sti & strFilNavn(I) For Input As #1
Line Input #1, Linie(1) 'US12345 (test1)
Line Input #1, Linie(2) 'JFF00001
Line Input #1, Linie(3) 'Testemne1
Line Input #1, Linie(4) ' overskrifter
If Cells(1, 2) = "" Then ' tjekker om der er overskrifter i arket
Sdata = Split(Linie(4), ",")
Range(Cells(1, 2), Cells(1, UBound(Sdata) + 2)) = Sdata ' Overskrifter
End If
Do Until EOF(1)
Line Input #1, Data
RW = Range("B65536").End(xlUp).Offset(1, 0).Row
Sdata = Split(Data, ",")
Cells(RW, 1) = Linie(2)
Range(Cells(RW, 2), Cells(RW, UBound(Sdata) + 2)) = Sdata
Loop
Close 1
Next
End Sub