Problemer med EOF
Dette er en fortsættelse af http://www.eksperten.dk/spm/540307.Jeg har en lukket fil jeg skal have rettet i. Filen består af ca 300 linier med 20 tegn på hver linie.
Eksempel:
123456ºººººººººººººº
X1X2ºººººººººººººººº
1234ºººººººººººººººº
2122ºººººººººººººººº
ºººººººººººººººººººº
ºººººººººººººººººººº
ºººººººººººººººººººº
V½=@ºººººººººººººººº
ºººººººººººººººººººº
ºº32ººººººººººº25º3º
203010ºººººººººººººº
20ºº1º0ººººººººººººº
ºººººººººººººººººººº
På et tidspunkt, omkring linie 50 står denne linie:
ºº00ººººººººººººººº
Ved brug af
Do While Not EOF(1)
<something>
loop
...stopper loopet ved denne linie.
Sletter jeg tegnet og skriver et andet kører koden filens 300 linier færdig. Rykker jeg tegnet 20 linier længere ned, stopper loopet der!!! Står tegnet på 2. plads eller frem kører koden!!!
Formålet med filrettelsen er at udskifte 2. til 10 tegn i linie 37.
Sætter jeg koden til at køre loop fra 1 til 1000 stopper den akkurat samme sted og melder RT error 62 - Input past end of file.
Koden ser således ud:
Sub UdskriftKarakterer()
Dim strLinie, Nytekst As String
Dim LinieTæller As Integer
Sti = Range("B1").Value
Nytekst = Range("B2").Value
NytekstLngd = Len(Nytekst)
If NytekstLngd < 1 Or NytekstLngd > 8 Then
Exit Sub
End If
NyLngd = 8 - NytekstLngd
LaegTil = NyLngd
'Boble = "º"
I = 1
For I = I To LaegTil
Boble = (Boble & "º")
Next
Close #1, #2
TexName = (Sti & "test.txt")
newFname = (Sti & "Backup.txt")
Open newFname For Output As #2
Open TexName For Input Access Read As #1
LinieTæller = 0
Do While Not EOF(1)
Line Input #1, strLinie
LinieTæller = LinieTæller + 1
If LinieTæller = 37 Then
strLinie = Left(strLinie, Len(strLinie) - 18) & Nytekst & Boble & Right(strLinie, Len(strLinie) - 10)
End If
Print #2, strLinie
Loop
Close #1, #2
Kill TexName
Name newFname As TexName
End Sub
