Avatar billede Kongerslev_dk Novice
12. januar 2013 - 13:09 Der er 5 kommentarer

Udtræk fra .dat eller .txt filer med varierende indholdsstruktur

Hej
Jeg har mange enkelt filer med transaktions data, hver fil indeholder en record/linie med minimum disse oplysninger som jeg gerne vil have trukket ud så jeg kan bruge dem i et regneark.
Date=<her følger en dato i formatet xxxx-xx-xx>
Total=<her følger et tal repræsenteret med minimum 3 cifre>

Hver oplysning er adskilt med tegnet &

Jeg kan også samle alle filerne til en fil med mange linier hvis det gør gennemløbet nemmere.

Hvordan gør jeg nemmest det?
Kan det evt. gøres direkte i excel som en makro eller lignende?

Jeg glæder mig til at høre hvordan det kan løses.

Mvh. Jens Peter

Eksempel på en hel linie:
Date=2012-08-01&Time=11%3A29%3A02&SalesPersonKey=1&SalesPerson=Pernille%20Kongerslev&Item1Description=h%C3%A5rpynt%203%20stk.&Item1Qty=1.000000&Item1Code=s3&Item1Discount=0.000000&Item1TaxRate=25.000000%2F0.000000%2F0&Item1TaxName=Moms&Item1UnitValue=1000&ItemCount=1&SubTotal=1000&TaxAmount1=200&TaxAmount2=0&TaxAmount3=0&IsTaxInclusive=1&Total=1000&CouponSavings=0&Status=1&PayCount=1&PaymentMethod1=1&AmountTendered1=10000&PaymentRef1=&ChangeGiven=9000
Avatar billede supertekst Ekspert
12. januar 2013 - 13:44 #1
Det skulle nok være muligt via en makro i Excel.
Behersker du VBA?

og så velkommen til Eksperten..
Avatar billede Kongerslev_dk Novice
12. januar 2013 - 13:47 #2
Hej supertekst

Nej det gør jeg desværre ikke :-(

Mvh.
Jens Peter
Avatar billede supertekst Ekspert
12. januar 2013 - 14:02 #3
Prøv at sende et eksempel på råfilen og det ønskede udtræk sådan som det skal se ud i Excel.

Hvilken Office-version anvender du? Anvender selv 2007.

@-adresse under min profil.
Avatar billede supertekst Ekspert
14. januar 2013 - 13:45 #4
Rem Indtil videre aktiveres kode med Alt+F8 / Afspil makroen opDelingAfDat

Dim sti As String, filnavn As String, linje As String, tabel As Variant
Dim række As Long
Public Sub opdelingAfDat()
    sti = ActiveWorkbook.Path
    række = 2                                      'overskrift i række 1
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(sti)
    Set fc = f.Files
   
Rem traverser den aktuelle mappe - find filer med extension .dat
    For Each f1 In fc
        filnavn = LCase(f1.Name)
        If LCase(Right(filnavn, 4)) = ".dat" Then
            udtrækFraDat filnavn
        End If
    Next
   
    MsgBox "Gennemløb afsluttet"
End Sub
Private Sub udtrækFraDat(filnavn)
Dim parts As String
    Open sti & "\" & filnavn For Input As #1
    While Not EOF(1)
        Input #1, linje
        tabel = Split(linje, "&")
       
        For parts = 0 To UBound(tabel)
            del = tabel(parts)
           
            If InStr(del, "Date") = 1 Then
                Range("A" & række) = Mid(del, 6)        'dato
            Else
                If InStr(del, "Total") = 1 Then
                    Range("B" & række) = Mid(del, 7)    'total
                    række = række + 1
                End If
            End If
        Next
    Wend
    Close #1
End Sub
Avatar billede supertekst Ekspert
01. marts 2013 - 11:44 #5
Kunne det anvendes?
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

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