Avatar billede jpi Mester
26. april 2010 - 12:33 Der er 10 kommentarer og
1 løsning

Forkert tekst-format ?

Jeg har nogle tekst filer, hvor teksten ikke står "pænt"

der er ikke nogle nye-linie afsnit, når man kigger i filen med notepad.
Åbner man derimod i Wordpad, så ser det fint ud. Gemmer man derefter i Wordpad, så ser det efterfølgende fint ud i notepad også.

Problemet er at når filen læses med VBA, så er al teksten en enkelt linie, før teksten ehar været åbnet og gemt med wordpad.

da filerne opdateres løbende kan jeg ikke hver gang åbne i wordpasd og gemme igen, så findes der en metode til at konvertere fra det ene format til den andet i VBA ?
Eller nogle linier kode til at konvertere ?
Avatar billede supertekst Ekspert
26. april 2010 - 13:07 #1
Hvilket program skal tekstfilen indlæses i?
Avatar billede jpi Mester
26. april 2010 - 13:24 #2
Det skal indlæses af en VBA-funktion i Excel

Det skal derfor være muligt at "konvertere" det inden det indlæses, hvis det er i det "forkerte" format
Avatar billede supertekst Ekspert
26. april 2010 - 13:31 #3
Har du mulighed for at sende tekstfilen?

Hvis ja - @-adresse under profil.
Avatar billede jpi Mester
26. april 2010 - 13:51 #4
Mail med test-fil sendt...
Avatar billede Slettet bruger
26. april 2010 - 14:03 #5
Jeg kan ikke give dig en løsning i Visual Basic, men jeg kan fortælle dig hvad problemet er:
Linjeskiftene er indkodet i UNIX- eller Mac-format, enten med et newline-tegn eller et carriage return-tegn, hvor Windows bruger begge dele efter hinanden. I C(++) betegnes dette med '\r\n'.
Avatar billede jpi Mester
26. april 2010 - 14:14 #6
Ja, det havde jeg også fået googlet mig til at problemet er...
Men jeg mangler stadig en løsning :-)
Avatar billede supertekst Ekspert
26. april 2010 - 14:19 #7
Har læst filen via VBA & også konstateret at "skilletegnet" er Asc(10) do. VbLf.

Der kan enten skrives en stump VBA der indlæser grundfilen og tilføjer VbCr og skriver i en ny fil.

eller

Der kan indlæses direkte i Excelfilen og der "handles" når VbLf indlæses.
Avatar billede jpi Mester
26. april 2010 - 14:30 #8
Jeg bruger "Line Input #1, strReadline" for at læse i filen.

Hvis jeg med den enkelte linie kode indlæser hele filen, den oprindelige der ikke indeholder Cr - vil strReadline så indeholde hele filen ? Flere Mb ?

Løsning 2 er ikke aktuel, da selve Excelarket ikke skal indeholde disse data og jeg helst vil udelade sheets fra en "beskidt" konvertering :-)
Avatar billede supertekst Ekspert
26. april 2010 - 14:55 #9
Koden har væet anvendt i et regneark ("kun som pladsholder"):

Public Sub konverterFil()
Dim tegn As String, linje As String
    Open "C:\Documents and Settings\test.txt" For Input As #1
    Open "C:\Documents and Settings\test2.txt" For Output As #2
   
    linje = ""
   
    Do While Not EOF(1)    ' Loop until end of file.
        tegn = Input(1, #1)    ' Get one character.
       
        If tegn = vbLf Then
            Print #2, linje
            linje = ""
        Else
            linje = linje + tegn
        End If
    Loop
    Close #1
    Close #2
End Sub
Avatar billede jpi Mester
27. april 2010 - 09:50 #10
Perfekt !

Tak

Smid et svar, så du kan få dine point :-)
Avatar billede supertekst Ekspert
27. april 2010 - 10:04 #11
Fint - selv tak & et svar...
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
Kurser inden for grundlæggende programmering

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