Gennemløbe txt.fil og søge hver 15. linjeskift og erstatte med særlig tegn
Hvordan gennemløber man i Visual Basic en stor txt.fil som skal redigeres. Jeg skal fínde hver 15.linjeskift og erstatte med særlig tegn. Jeg kan ikke anvende søg og erstat i min editor, da filen fylder 300 megabyte. Editoren går død med den macro som jeg ellers havde lavet. Håber der er en derude som kaN HJÆLPE mig.
Via VBA ville det nok kunne lade sig gøre ved at indlæse en linie ad gangen, teste for 15. linjeskift og skrive i en ny fil. Men det kan komme an på en prøve.
Du er velkommen til at sende et MINDRE uddrag af din fil - så skal jeg gerne forsøge. Mail-adresse under profil.
Egentlig er det ikke linjeskift der ledes efter, men 15 stk kolonneadskillere. Problemet er at der i teksten i kolonne 14 er includeret linjeskift som ikke vedrører det korrekte linjeskift.
Eksempel på tekst i filen: Idnr;Kunde;Saldo;Felt4;Felt5;Felt6;Felt7;osv 12;Peter;100kr;felt4tekst;felt5tekst;Felt6tekst NyLinje NyLinje NyLinje NyLinje;NyLinje (linjen indeholder for mange linjebreaks) 13;Niels;200kr;Felt4tekst;felt5tekst;Felt6tekst;Felt7;(linjen OK)
Jeg havde tænkt på genneløbe filen tegn for tegn og optælle antallet af linjeskift og replace nr 15 med et særligt tegn og der efter forsætte tegnlæsningen påny. Tilsidst ville jeg slette alle linjeskift i filen. Derefter replace det indsatte særlige tegn med et korrekt linjeskift. Så burde filen være til at indlæse i min database.
Dim starttid3, i3, j3, Finish3, sekunder3, ss3 starttid3 = Timer 'tidsmåling i sekunder starter Dim Streng1, Streng2, Linie2, linie, Filex, Filey, tegn, tegn2 As String Dim antal, Optael As Integer
Filex = file1.Text
'Streng1 = ord1.Text 'Streng2 = ord2.Text
Filey = file2.Text
Open Filex For Input As #8 Open Filey For Output As #9
While Not EOF(8)
tegn = Input(1, #8)
If tegn <> "ÿ" Then Print #9, tegn GoTo bunden:
End If
antal = antal + 1
If antal > 14 Then 'Instr(1,"hhh","ÿ") tegn = Replace(tegn, "ÿ", " ÿ" + Chr(254)) Print #9, tegn antal = 1 Else Print #9, tegn
End If
'.... bunden: Wend Close #8 Close #9 ' tidsmåling - start ligger i toppen For i3 = 1 To 1000 j3 = i3 * i3 Next i3 Finish3 = Timer sekunder3 = Finish3 - starttid3 MsgBox "Det tog " & sekunder3 & " sekunder at gennemføre programmet" ' tidsmåling slut
MsgBox "Programmet er afsluttet og filen er gemt på: " & file2 & "" ss3 = "explorer " & file2 & "" ' åbner kataloget og filen i fil2 Shell ss3, vbNormalFocus 'sætter den åbne fil forrest i applicationen ' skriv evt vbMaximizedFocus End Function
Det er nu lykkedes mig at gennemløbe filen tegn for tegn, men outputtet står under hinanden i output-filen. Jeg tæller de første 15 y-umlautter og erstatter med y-umlaut samt Chr(254). Jeg ville egentlig gerne kunne gå 8 tegn tilbage i filen og erstatte med y-umlaut samt Chr(254). Har du en ide mere ? Tak indtil videre.
Der skal nok opbygges i det jeg benævner "Linie" - inden der skrives til uddata-filen
Synes godt om
Ny brugerNybegynder
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.