Gå til innhold

erstatte tekst i ekstern fil


Anbefalte innlegg

Videoannonse
Annonse

Se på dette:

Private Sub Form_Load()
replacefunc 4, "ih", "oihO"
End Sub

Private Function replacefunc(linje As Double, find As String, replacewith As String) As String

Dim Buff As String

Open "C:\testfil.txt" For Input As #1
Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila
Line Input #1, Buff
List1.AddItem Buff
Loop
Close #1


Dim i

For i = 1 To List1.ListCount

   If linje = i Then 'hvis dette er den linja du har bestemt
   
       If replacefunc = "" Then 'siden vi må legge til ny linje, må vi førts sjekke om den er tom
           replacefunc = replace(List1.List(i - 1), find, replacewtih) 'her replacer vi
       Else
           replacefunc = replacefunc & vbNewLine & replace(List1.List(i - 1), find, replacewtih) 'her replacer vi
       End If '####
       
   Else 'hvis det ikke er den linja du har bestemt
   
       If replacefunc = "" Then 'siden vi må legge til ny linje, må vi førts sjekke om den er tom
           replacefunc = List1.List(i - 1)
       Else
           replacefunc = replacefunc & vbNewLine & List1.List(i - 1)
       End If '####
       
   End If
   
Next i

MsgBox replacefunc

End Function

 

Edit: den brukes slik:

 

replacefunc 4, "ih", "oihO"

 

4 = Hvilken linje du vil replace på

"ih" = Hva den skal finne

"oihO" = Er hva den skal replace den med

Endret av Jonas
Lenke til kommentar

Igjen kan vi bruke en tekst boks. Når man har ting i en tekst boks kan man bruke .list() funksjonene til å hente ut ting fra linjer:

Private Sub Form_Load()
MsgBox gettext(5)
End Sub

Private Function gettext(line As Double)

Dim Buff As String

Open "C:\testfil.txt" For Input As #1
Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila
Line Input #1, Buff
List1.AddItem Buff
Loop
Close #1

gettext = List1.List(line - 1)   'vi må ta minus en fordi index i en list boks starter med 0

End Function

Endret av Jonas
Lenke til kommentar

Ok, her er funksjonene ferdig:

Private Sub Form_Load()

Dim ret
ret = replacefunc("C:\testfil.txt", 2, "bla", "tralabla")

End Sub

Private Function replacefunc(file As String, linje As Double, find As String, replacewith As String) As Boolean
On Error GoTo feil

Dim Buff As String, tekst As String

Open file For Input As #1
Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila
Line Input #1, Buff
List1.AddItem Buff
Loop
Close #1


Dim i

For i = 1 To List1.ListCount

  If linje = i Then 'hvis dette er den linja du har bestemt
  
      If tekst = "" Then 'siden vi må legge til ny linje, må vi førts sjekke om den er tom
          tekst = Replace(List1.List(i - 1), find, replacewith) 'her replacer vi
      Else
          tekst = tekst & vbNewLine & Replace(List1.List(i - 1), find, replacewith, 1, , vbTextCompare) 'her replacer vi
      End If '####
      
  Else 'hvis det ikke er den linja du har bestemt
  
      If tekst = "" Then 'siden vi må legge til ny linje, må vi førts sjekke om den er tom
          tekst = List1.List(i - 1)
      Else
          tekst = tekst & vbNewLine & List1.List(i - 1)
      End If '####
      
  End If
  
Next i

Open "C:\testfil.txt" For Output As #1
Print #1, tekst
Close #1

replacefunc = True

Exit Function

feil:

replacefunc = False

End Function

 

replacefunc("C:\testfil.txt", 2, "bla", "tralabla")

Koden replacer bla, med tralabla på linje 2, i testfil.txt

 

Ret er 1 hvis ingen ting galt har skjedd. Skjer det en error er ret 0.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...