een woord in een tekstdocument vervangen

Status
Niet open voor verdere reacties.

HenkMartinus

Gebruiker
Lid geworden
25 apr 2007
Berichten
36
Ik wil een macro maken in word die het volgende moet doen:

Als in een tekstdocument het woord vers met daarachter een willekeurig cijfer voorkomt; dus vers (0-150); moet er vs.(0-150) komen te staan. Wanneer alleen het woord vers er staat moet het zo blijven staan.

Wie kan mij helpen om dit voor elkaar te krijgen?
 
Zoeken naar: vers (
Vervangen door: vs.(
Neem een macro op.
 
tekst in word document vervangen

Mijn excuus dat het niet duidelijker is omschreven, maar de haakjes om de getallen horen er niet te staan. Dit was alleen om aan te geven dat de getallen variëren van 0 t/m 250

Dus zo: In het tekstdocument komt herhaaldelijk het woord vers voor met daarachter een willekeurig cijfer dat varieert van 0 tot 250
b.v zo: vers 14 of vers 99 of vers 119 of....of....of......
dit woordje vers wil ik vervangen door vs. zodat er komt te staan vs.14 of vs.99 of vs.119 of....of....of...

dus vs. zonder een spatie en daarna het cijfer, waarbij het cijfer niet vervangen moet worden.
 
Pff, wat is het moeilijk om in één keer alles duidelijk weer te geven. Ik heb helemaal vergeten dat de enkele keren dat in de tekst het woord vers zonder een cijfer er achter staat, dat dan het woord vers volledig moet blijven staan, dat is juist de moeilijkheid van het hele verhaal.
 
Daarvoor biedt dit forum de mogelijkheid een voorbeeldbestand te plaatsen.
 
Wanneer het woord vers zonder een cijfer wordt aangegeven moet het woord vers blijven staan.

Wanneer het woord vers met een cijfer wordt gegeven b.v. vers 17 moet het woord vers worden vervangen door vs.17 of vs. 17 met een spatie.

Is dit misschien duidelijker, ik zou niet weten hoe ik dit anders moet zeggen.

Het zou me heel wat tijd aan corrigeren sparen in de hoeveelheid tekst die ik moet nakijken.
Temeer omdat ik deze macroconstructie dan nog op meerdere tekstcombinaties kan toepassen.
 
Test deze eens, ik vind het niet netjes maar ik ken Word VBA onvoldoende en als je het maar een enkele keer nodig hebt maakt dat natuurlijk niet uit :)
Code:
Sub Macro1()
    Dim i As Integer
    
    For i = 48 To 57
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "vers " & Chr(i)
            .Replacement.Text = "vs. " & Chr(i)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next i
End Sub
 
Laatst bewerkt:
@Ed

Basaal:

Code:
ActiveDocument.Content.Find.Execute "vers", , , , , , , , , "vs.", 2

Volgens mij wijkt
Code:
j=0
vers & j


weinig af van
Code:
j=48
vers & chr(j)
 
Ik had wat zitten spelen en heb het geplaatst zoals het werkte. Maar inderdaad i = Chr(48) is hetzelfde als i = 0.
TS zoekt naar het vervangen van bijvoorbeeld vers 101 door vs. 101
Het woord vers dat niet door een getal wordt gevolgd moet onveranderd blijven.
 
Edmoor,

Dit is fantastisch, het werkte meteen en doet precies wat ik wilde, geweldig. heeeel bijzonder bedankt!!

Nog één vraag wat doet de for-next lus precies? Moet ik die nog wijzigen als er te veel woorden zijn of??
 
De For...Next is een loopje dat vers 0 t/m vers 9 zoekt en dit vervangt door vs. 0 t/m vs. 9
Wat het complete nummer is maakt immers niet uit, het is tekst en geen rekenwerk.
 
Dat is duidelijk, nogmaals heel hartelijk bedankt, tevens mag hierbij mijn vraag als opgelost worden gezien.
 
Ik geloof dat de hint niet helemaal doorgekomen is:

Code:
sub M_snb()
    with ActiveDocument.Content.Find
      for j=0 to 9
        .Execute "vers " & j , , , , , , , , , "vs." & j, 2
      next
    end with
end sub
 
Kennelijk niet inderdaad.
Jouw versie werkt ook prima en die heeft mijn voorkeur :)
 
Sorry, was even aan mijn aandacht ontgaan, uiteraard ga ik deze ook proberen.
Hartelijk dank hiervoor.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan