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
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
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.