Woordje vervangen

Status
Niet open voor verdere reacties.
Het verschil tussen #19 en #20 is:
#19 - Uit te sluiten woorden
#20 - Te vervangen woorden
 
Edmoor, heb de macro van #19 overgenomen, we zijn er bijna, alleen zie ik dat er voor het woord Zoon nu zon wordt neergezet. blijkbaar worden de letters Zoo vervangen door zo en wordt dit woord Zoon of zoon nog niet overgeslagen en geen hoofdletter

snb, deze macro geeft bij mij in de tweede regel een foutmelding.
 
Dan zul je de tweede regel met de eerste moeten vergelijken en aanpassen aan de eerste regel (zoals ik nu in mijn vorige bericht gedaan heb).
 
#19

Voortbordurend op #19 kom ik hier mee wat in de richting zoals ik dacht, maar het werkt nog niet goed,
om een of andere reden gaat het met de woorden zoodra of Zooals niet goed daar wordt geen zodra en zoals neergezet anders gezegt het zoo van deze woorden wordt overgeslagen. Ook de hoofd en kleine letter worden niet goed neergezet.
Hoe krijg ik dat toch voor elkaar? willen jullie me nog verder helpen?

Hierbij nog een keer het rijtje woorden plus de macro.

rijtje met woorden:

Zoon zoodra zoowel zoodanig zoolang zo’n evenzoo zooals alzoo zooveel zoovele zoodat zoonen Zoo zoo. Een zoon en de zon schijnt. Zoodra zoodra Zoodra


' deze macro sluit woorden uit
Sub SluitUit()
With Selection.Find
.ClearFormatting
.Text = "Zoo" 'is het nodig dat de volgende op True staat?
.MatchCase = True 'True bij grote en kleine letters anders False?
.Forward = True
.Wrap = wdFindContinue
.Format = True
Do While .Execute
Select Case Selection.Next.Text
Case "Zoon ", "zoon "

Case Else
MsgBox "woord Zoon/zoon gevonden en overgeslagen"
If Selection.Text = "Zoo" Then
MsgBox "woord wordt Zo" 'voor hoofdletter
Selection.Text = "Zo"
Else
MsgBox "woord wordt zo" ' voor kleine letter
Selection.Text = "zo"
End If
End Select
Selection.Collapse Direction:=wdCollapseEnd
Loop
End With
 
De kode uit #20 heb ik gedraait de fout is er weliswaar nu uit (zat in het aantal komma's), maar als ik het loslaat op de tekstregel die ik daarvoor gebruik uit#19 dan klopt er weinig van en worden sommige zoo's gewoon niet meegenomen. Ook zie ik nog niet hoe het woord zoon overgeslagen moet worden zodat er geen zon komt te staan? Dan kom ik met de kode uit #19 iets verder
 
Het is verstandig om goede feedback te geven als je om hulp vraagt.
Het getuigt ook van beleefdheid een (gratis) helper te bedanken en van inhoudelijke feedback te voorzien.
Voor anderen die deze draad volgen kan wat hier gebeurt ook leerzaam zijn als je goede feedback geeft.

Welke zoo's worden 'niet meegenomen' ?

Heb je überhaupt geprobeerd te begrijpen wat de code (die toch veel eenvoudiger is dan waarmee je nu aaan het stoeien bent) doet ?

En tenslotte: het is een goede gewoonte (lees: vereist) in dit forum VBA code tussen Code markeringen (Tags) te zetten.

Lees vooral eens: https://www.helpmij.nl/forum/announcement.php?f=348
 
Laatst bewerkt:
Tja, een hoop minpunten, maar ik trek het boetekleed aan.
Ben blij dat er zo gereageerd wordt op vragen, uit de kunst. Dank u wel.

Daarmee is echter mijn probleem nog niet opgelost.

Sng: de Code die je erbij deed heb ik geprobeerd en aangepast en nog eens geprobeerd.

Deze code is nu zo:

Code:
Sub Vervang()
' Vervang Macro
' Macro opgenomen op 2-7-2018 door H.C.M. ten Haaken
'Deze macro vervangt woorden, maar doet het om een of andere reden niet goed.
  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
      .Execute "Zoo?", , , , , , , , , "Zo?", 1
      .Execute "Zoo!", , , , , , , , , "Zo!", 1
      .Execute "zoodra?", , , , , , , , , "zodra", 1
      .Execute "zoolang", , , , , , , , , "zolang", 1
   End With
End Sub

Maar losgelaten op de volgende woordjes doet het niet wat ik zou willen.

Zoon zoon zoodra zoowel zoodanig zoolang zo’n evenzoo zooals alzoo zooveel zoovele zoodat zoonen Zoo zoo. Een zoon en de zon schijnt. Zoodra zoodra Zoodra.

Uit deze woordjes moet de overbodige letter o verwijderd worden en het woord Zoon onaangetast en de hoofd/kleine letters blijven staan.

Ik kwam met de Code van edmoor iets verder daar werd de overbodige o verwijderd en de hoofd/kleine letters bleven behouden. Alleen het woordje Zoon veranderde in Zon, en dat laatste, dat er Zoon blijft staan, lukt me niet.

die Code ziet er nu zo uit:

Code:
' deze macro moet het woord Zoon uitsluiten
 Sub SluitUit()
    With Selection.Find
        .ClearFormatting
        .Text = "Zoon"  'is het nodig dat de volgende op True staat?
        .MatchCase = False 'False bij grote en kleine letters anders True?
        .MatchWholeWord = False
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        Do While .Execute
                Select Case Selection.Next.Text
                Case "Zoon", "zoon"
                Case Else
                    
                    If Selection.Text = "Zoo" Then
                        MsgBox "woord wordt Zo" 'voor hoofdletter
                        .Text = "Zoo"
                        Selection.Text = "Zo"
                    Else
                        MsgBox "woord wordt zo" ' voor kleine letter
                        .Text = "zoo"
                        Selection.Text = "zo"
                    End If
                
            End Select
            Selection.Collapse Direction:=wdCollapseEnd
        Loop
    End With

End Sub

Mocht er nog wat onduidelijk zijn of niet goed dan hoor ik dat graag.
 
Dan heb ik een nog iets andere benadering:
Code:
Sub Woorden()
    Vervang "Zoon", "Kindvan"   [COLOR="#008000"]'Even Zoon aan de kant zetten[/COLOR]
    Vervang "zoon", "kindvan"   [COLOR="#008000"]'Even zoon aan de kant zetten[/COLOR]
    Vervang "Zoo", "Zo"
    Vervang "zoo", "zo"
    Vervang "Kindvan", "Zoon"   [COLOR="#008000"]'Zoon weer terug zetten[/COLOR]
    Vervang "kindvan", "zoon"   [COLOR="#008000"]'zoon weer terug zetten[/COLOR]
End Sub

Sub Vervang(Woord1 As String, Woord2 As String)
    For Each myStoryRange In ActiveDocument.StoryRanges
        With myStoryRange.Find
            .Text = Woord1
            .Replacement.Text = Woord2
            .MatchCase = True
            .Wrap = wdFindContinue
            .ClearFormatting
            .Replacement.ClearFormatting
            .Replacement.Highlight = False
            .Execute Replace:=wdReplaceAll
        End With
    Next myStoryRange
End Sub

Waarbij je alleen de Sub Woorden start.
 
Laatst bewerkt:
edmoor, heb dit vanmorgen uitgeprobeerd en moest alleen bij het woord zoon een spatie bij in zetten anders werd het woordje zoonen niet op de juiste wijze in zonen veranderd.

Dit werkt perfect en kan ook op andere woorden toegepast worden.
Ik ben er heel blij mee en dank je voor de moeite en het geduld dat je met mij hebt gehad. Ook sns wil ik bedanken omdat ook hij heeft meegedacht.
Wat mij betreft is de vraag afgehandeld en uitstekend opgelost.
Met vriendelijke groet,
Henk ten Haaken
 
Graag gedaan Henk.
Fijn dat er toch een oplossing is :)
 
vreemd teken

In het verlengde van het probleem met het vervangen van woorden komt nog een volgend probleempje:

In tekst die ik gescand heb uit oude boeken komt tussen bepaalde woorden dit teken voor voor¬beeld. Dit teken kreeg ik in het verleden weg met de volgende Code:

Code:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
      .Text = "^-"
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll


Dit teken kan ik echter niet vervangen/verwijderen met de nieuwe code voor het vervangen van woorden zoals ik die de afgelopen dagen van u heb gekregen.

Code:
Vervangwoord ”^-”, ””

'Sub VervangWoord(Woord1 As String, Woord2 As String)
    For Each myStoryRange In ActiveDocument.StoryRanges
        With myStoryRange.Find
            .Text = Woord1
            .Replacement.Text = Woord2
            .MatchCase = True
            .Wrap = wdFindContinue
            .ClearFormatting
            .Replacement.ClearFormatting
            .Replacement.Highlight = False
            .Execute Replace:=wdReplaceAll
        End With
    Next myStoryRange
End Sub

Het teken “^-“ wordt kennelijk niet doorgegeven naar Sub VervangWoord

Is er een mogelijkheid dat dit teken met de nieuwe code toch verwijderd kan worden?
 
Met die functie kan je een stukje tekst niet vervangen door niks.
Je kan wel dit doen:
VervangWoord "voor¬beeld", "voorbeeld"
 
Laatst bewerkt:
vreemd teken

Dank voor je snelle antwoord,

Ik was vergeten erbij te zeggen dat het gaat om een tijdelijk afbreekstreepje, zo in Word genoemd.

Dan moet ik voor alleen dit stukje de oude code maar laten staan, is ook geen ramp, perfectie gaat soms te ver bij mij.

Nogmaals hartelijk dank
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan