Woordje vervangen

Status
Niet open voor verdere reacties.

HenkMartinus

Gebruiker
Lid geworden
25 apr 2007
Berichten
36
Ik heb een macro gemaakt die het woordje "Zoo" vervangt door "Zo" zie hieronder:

met deze macro wordt echter ook het woordje Zoon gewijzigd in Zon,
daarom zou ik de constructie zo willen aanpassen dat het met uitzondering van Zoon of zoon is.
Hoe moet ik dat doen?

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Zoo"
.Replacement.Text = "Zo"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True 'true ivm hoofd letters
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
 
Wijzig:
.MatchWholeWord = False

In:
.MatchWholeWord = True
 
Ik heb een macro gemaakt die het woordje "Zoo" vervangt door "Zo" zie hieronder:

met deze macro wordt echter ook het woordje Zoon gewijzigd in Zon,
daarom zou ik de constructie zo willen aanpassen dat het met uitzondering van Zoon of zoon is.
Hoe moet ik dat doen?

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Zoo"
.Replacement.Text = "Zo"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True 'true ivm hoofd letters
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Dat is vlug maar waarschijnlijk heb ik de vraag niet duidelijk gesteld want zo verandert het woordje Zoo ook niet, wat juist wel de bedoeling is. dus wel het woordje Zoo maar niet in het woordje Zoon
 
Dan weet ik niet wat je doet want dat werkt hier prima.
Het quoten van je eigen post heeft ook geen nut want daar staat nog steeds de ongewijzigde code in.
 
Laatst bewerkt:
Heb je al gedaan wat ik liet zien in #2?
 
Welkom op het forum, met een voorbeeldbestandje wordt je sneller en beter geholpen.
Misschien staan er wel verborgen tekens in je bestand waardoor het niet werkt???
 
Dat zou al lang bekend moeten zijn:
HenkMartinus
Junior member
Geregistreerd:
25 april 2007
 
Mijn excuus als e.e.a. niet gaat zoals het behoort, ik vrees dat de leeftijd (77) mij parten speelt.

Ik zal mijn wens nog een keer verduidelijken:

Ik ben bezig om oude manuscripten te digitaliseren. Dus omzetten naar tekstbestanden.
Daarvoor heb ik een macro geschreven die diverse ouderwetse woorden vervangt voor huidige woorden b.v. Mensch door mens enz.

Nu wil ik dat ook met woorden zoals:
Zoon zooals het Zoo wie zoo nog alzoo. Een zoon of zoonen zijn dat is maar zoo, Zoo en zoolang het zoodra zoo’n, zoowel, evenzoo, Zoodanig

Dat had ik gedaan met bovengenoemde macro en dat werkt. Maaaaarrr, zoals de macro nu is vervangt hij ook in het woord zoon (twee maal) de twee o's voor één o en dat is natuurlijk niet de bedoeling.

volgens mij moet er dan in de macro een constructie bij in die zegt

If .Tekst="zoon " Then
woordje overslaan
Else
de bestaande macro

Ik krijg dat echter met uw aanwijzing #2 niet voor elkaar, probeer het maar eens met de zojuist genoemde zin met dubbele o's.
Als ik weet hoe dat moet, zou ik dat ook op andere woorden kunnen toepassen en al die kleine stukjes macro die ik nu in één grote macro heb verzamelt, ter vervanging van al die ouderwetse woorden, wat minder kunnen worden.

Bij voorbaat al vast bedankt voor uw hulp
 
In VBA, zo:

Code:
Sub M_snb()
  cells.replace "Zoo ","Zo ",2
  cells.replace "Zoo.","Zo.",2
  cells.replace "Zoo,","Zo,",2
  cells.replace "Zoo;","Zo;",2
  cells.Replace "Zoo~?", "Zo?", 2
  cells.replace "Zoo!","Zo!",2
End Sub

Ziezo.
 
Laatst bewerkt:
Hier kan ik echt niets mee vanwege Cels lijkt me dat meer voor Excel maar het gaat om macro's in Word.
Overigens is mijn kennis van VB praktisch 0.

kunt u me dat niet inpassen in de bovengenoemde macro, die werkt en daar hoeft alleen de genoemde uitzondering maar bij in?
 
Simpele ouderwetse hack toepassen. Oftewel in dit geval zoeken op "Zoo " (dus met een spatie er achter) en dat vervangen door "Zo ". Dan gaat het met "Zoon" e.d. vanzelf goed.
 
kunt u me dat niet inpassen in de bovengenoemde macro, die werkt en daar hoeft alleen de genoemde uitzondering maar bij in?
Dat liet ik in #2 al zien.

Die .MatchWholeWord = True zorgt ervoor dat alleen het exact opgegeven woord wordt vervangen.
Dus alleen het woord "Zoo" en niet het woord Zoon.

En de vraag in #6 heb je nog geen antwoord op gegeven.
 
Laatst bewerkt:
dit antwoord stond toch in #9
met een vraag aan u!

<Ik krijg dat echter met uw aanwijzing #2 niet voor elkaar, probeer het maar eens met de zojuist genoemde zin met dubbele o's.>
 
Die vraag heb ik hierboven beantwoord.
Bij mij werkt die wijziging perfect.

Code:
Sub Vervang()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Zoo"
        .Replacement.Text = "Zo"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True 'true ivm hoofd letters
       [COLOR="#008000"] .MatchWholeWord = True[/COLOR]
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
 
Laatst bewerkt:
Ik ben bang dat we langs elkaar heen praten

Hier de zin met al die woorden met zoo er in die moeten worden vervangen door zo met uitzondering van het woord zoon

Zoon zoodra Zoowel zoodanig zoolang zoo’n evenzoo zooals alzoo zooveel zoovele zoodat zoonen Zoo zoo nog. Een zoon


Hier dezelfde zin maar dan hoe het worden moet:

Zoon zodra Zowel zodanig zolang zo’n evenzo zoals alzo zoveel zovele zodat zonen Zo zo en nog zoon

Ik heb de macro die u me stuurde in de laatste #13 of #14 geloof ik, onveranderd gebruikt en ik krijg niet dit resultaat eruit
 
Je had het alleen over het woord "zoo", niet over voor "Zoo" bevatten.
Dat is het misverstand.
Plaats dan dat document eens.
 
Laatst bewerkt:
Oei edmoor, dat is een heel groot boek (bestand waar) al die woorden die ik hier achter elkaar heb gezet, in staan, dus een heel gewoon Word doc bestand. En als het in die samengestelde zin werkt, dan werkt het ook in dat grote bestand. M.i. heeft dat dan ook niet zoveel zin. nog afgezien van hoe ik dat dan moet versturen?
 
Dat document is ook niet nodig. Dat was een te snelle opmerking ;)

Probeer het eens zo:
Code:
Sub Vervangen()
    With Selection.Find
        .ClearFormatting
        .Text = "zoo"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        Do While .Execute
            Select Case Selection.Next.Text
                Case "Zoon", "zoon"
                Case Else
                    Selection.Text = "zo"
            End Select
            Selection.Collapse Direction:=wdCollapseEnd
        Loop
    End With
End Sub
 
Laatst bewerkt:
In VBA Word

Code:
Sub M_snb()
  with activedocument.content.find
      .execute "Zoo ", , , , , , , , , "Zo ", 1
      .execute "Zoo.", , , , , , , , , "Zo.", 1
      .execute "Zoo,", , , , , , , , ,"Zo,", 1
      .execute "Zoo;", , , , , , , , ,"Zo:", 1
      .execute "Zoo~?", , , , , , , , , "Zo?", 1
      .execute "Zoo!",, , , , , , , , , "Zo!", 1
   end with 
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan