Gå til innhold

MS Word - Script for å erstatte tekst


Anbefalte innlegg

Jeg har en stor tekstfil hvor jeg ønsker å bytte ut noe tekst. Det er dessverre ikke så enkelt at jeg kan bruke den innebygde erstatt-funksjonen ettersom at jeg skal bytte ut hele linjen når denne begynner med en bestemt tekst. F.eks så skal alle linjer som begynner med "Tekst" erstattes med "Tekst 20".

 

Normalt sett ville jeg kopiert hele greia inn i Excel (hvor jeg er mer stødig) og lagd en sak selv, men det er snakk om over 300.000 linjer, så jeg må nesten bruke Word. Det som kan gjøre det litt lettere, er at det er fast avstand mellom linjene som skal erstattes. Så er det en enkel måte å gjøre slik at f.eks hver 10. linje skal fjernes og byttes ut med "Tekst 20"?

 

All hjelp ville vært helt supert!

Lenke til kommentar
Videoannonse
Annonse

Hm, jeg skulle tro makroer ville greie dette utmerket. Lim inn følgende kode i kodevinduet som dukker opp når du trykker ALT+F11:

Sub Main()

 

    Dim sFind As String, sReplace As String

    Dim Lines, Tell As Long

 

    ' * Innstillinger *

    sFind = "Tekst"

    sReplace = "Tekst 20"

 

    ' Hent alle linjer

    Lines = Split(Me.Range.Text, Chr(13))

 

    ' Gå gjennom alle linjer, ...

    For Tell = LBound(Lines) To UBound(Lines)

        ' ... og erstatt den dersom den begynner med den angitte tekst.

        If Left(Lines(Tell), Len(sFind)) = sFind Then

            Lines(Tell) = sReplace

        End If

    Next

 

    ' Lagre resultatet

    Me.Range.Text = Join(Lines, Chr(13))

       

End Sub

Endre teksten innenfor hermetegnene til det du ønsker å finne i sFind og det som linjen skal bli erstattet til i sReplace, hvoretter du må plasser markøren nedenfor den første linjen og trykke F5. Linjene som stemmer overens med søkestrengen, skulle nå være erstattet med teksten du oppgav.

Endret av aadnk
Lenke til kommentar

Flott, takker så mye!

 

Jeg klarte å koke sammen noe greier i går hvor scriptet søker seg frem, marker hele linjen, fjerner den og setter inn ny tekst. Så brukte jeg do/loop for at scriptet skulle gjenta seg gjennom hele dokumentet. Naturligvis ganske så optimistisk ettersom at å starte det scriptet på denne PCen er som å be en underernært dverg bære en jumbojet på ryggen.

 

Ditt script ser mye mer lovende ut, men jeg støter på et lite problem. "Compile error: Invalid use of Me keyword"

 

Noen idéer?

 

Edit: n/m Jeg hadde lagt koden i en modul. Fikk lagt den inn riktig nå, og det gikk lynende raskt. Takk igjen!

Endret av Bradbury
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...