Word macro bewerken

Status
Niet open voor verdere reacties.

mariannevanh

Terugkerende gebruiker
Lid geworden
14 dec 2004
Berichten
2.085
Ik wil in Word een macro maken waarbij een reeks strings worden vervangen/verwijderd. Als ik de macro bekijk, bevat deze een steeds terugkerend gedeelte. Kan dit gedeelte aan het begin van de macro worden gezet?
Er staat nu:
Code:
    With Selection.Find
        .Text = "a"
        .Replacement.Text = "b"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

Kan ik de variabelen vanaf .Forward tot en met .MatchAllWordForms bovenaan zetten, zodat ik de macro kan vervolgen met:
Code:
    With Selection.Find
        .Text = "c"
        .Replacement.Text = "d"
    End With
    With Selection.Find
        .Text = "e"
        .Replacement.Text = "f"
    End With

Vriendelijke groet,
Guido
 
Met zoiets:
Code:
    vv = Split("ab cd ef gh ij")
    
    For i = 1 To UBound(vv)
        With Selection.Find
            .Text = Left(vv(i), 1)
            .Replacement.Text = Right(vv(i), 1)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    Next i

De waarden met False mag je trouwens weg laten.
 
Laatst bewerkt:
Ed, dankjewel voor je reactie. Dit is echter niet wat ik bedoel.
De waarden a, b,c, d, e en f waren puur illustratief, maar in werkelijkheid zijn deze variabelen meerdere woorden of tekens.

Vriendelijke groet,
Guido
 
Zo zie je maar weer hoe belangrijk een goed voorbeeld is.
Maar het idee blijft natuurlijk hetzelfde:
Code:
    W1 = Split("Woord1 Woord2 Teken1 Teken2")

            [COLOR="#008000"]'Vervang ↑ door ↓[/COLOR]

    W2 = Split("WoordA WoordB TekenA TekenB")
    
    For i = 1 To UBound(W1)
        With Selection.Find
            .Text = W1(i)
            .Replacement.Text = W2(i)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    Next i
 
Laatst bewerkt:
Dankjewel voor je hulp.
Hieronder enkele voorbeelden van strings:
</a></nt\n1 CONC >
1 _REFERENCE\n1 _COLOR 255\n
">graf
[*
1 CONC mailto:

Deze zijn niet allemaal één op één in W1 en/of W2 te kopiëren, klopt dat?

Vriendelijke groet,
Guido
 
Ik zou niet weten waarom niet. Maar je hebt nu een half voorbeeld gegeven.
Laat eens weten wat je exact door iets anders wilt laten vervangen.
 
Laatst bewerkt:
In dit bestand staat op de oneven regels de zoekstring en op de even regels de vervangstring. Soms is de vervangstring leeg, dat betekent dus dat de zoekstring verwijderd moet worden en er niets voor in de plaats komt.

Vriendelijke groet,
Guido
 

Bijlagen

  • hm20171021.txt
    6,9 KB · Weergaven: 45
Dus als ik naar de regels 1, 2, 3, 4 kijk dan moet:
1 CONC naam, adres\n vervangen worden door ">graf
en:
</a></nt> door <nt><a href="

Klopt dat?
Overigens zie ik geen enkele lege regel.
 
Ik zie het. Als je het document opent met Kladblok, dan zie je de lege regels niet. Als je 'm opent met bijv. Notepad++ zie je ze wel.
Dan zie je ook dat de eerste 173 items (de paren t/m regel 346) een string bevatten die moet worden verwijderd

Vriendelijke groet,
Guido
 
Dat is dus totaal niet geschikt voor het gebruik van Arrays en moet je dat bestand inlezen per setje van 2 regels en die waarden gebruiken:
Code:
Sub LeesBestand()
    Dim bst As Long
    Dim Bron As String
    Dim Doel As String
    bst = FreeFile
    
    Open Environ("userprofile") & "\Desktop\hm20171021.txt" For Input As #bst
    On Error GoTo Einde
    Do Until EOF(bst)
        Line Input #bst, Bron
        Line Input #bst, Doel
        With Selection.Find
            .Text = Bron
            .Replacement.Text = Doel
            .Forward = True
            .Wrap = wdFindContinue
        End With
    Loop
    
Einde:
    Close #bst
End Sub

Het te gebruiken bestand heet dan hm20171021.txt en staat op je bureaublad.
Maar ik kan me niet voorstellen dat dat zo goed gaat.
Zorg ervoor dat het bestand met Kladblok goed te lezen is.
 
Laatst bewerkt:
Dankjewel. Ik wil dit graag uitproberen, maar loop nu tegen het probleem dat in mijn Word (2010) macro's zijn uitgeschakeld. Daarom ging ik Bestand - Opties - Vertrouwenscentrum - Instellingen voor Vertrouwenscentrum - Instellingen voor macro's. Daar selecteer ik (alhoewel afgeraden) de optie Alle macro's inschakelen en klik ik op OK.
Maar dan nog krijg ik dezelfde melding:
De macro's in dit project zijn uitgeschakeld
met een verwijzing naar de online help of documentatie, alwaar ik bovengenoemde tip las.

Hoe krijg ik de macro wel draaiend?

Vriendelijke groet,
Guido
 
Heb je al wel het tekst bestand zodanig dat de lege regels ook in Kladblok zichtbaar zijn?
Anders gaat het niet werken.

Wat de Macro's inschakelen betreft, dat zou inderdaad voldoende moeten zijn.
Waarom het dan nog niet werkt zou ik zo ook niet weten.
 
Heb je al wel het tekst bestand zodanig dat de lege regels ook in Kladblok zichtbaar zijn?
Anders gaat het niet werken.

Het tekstbestand is nu goed te lezen in Kladblok. Niet overal stond een CR/LF.

Wat de Macro's inschakelen betreft, dat zou inderdaad voldoende moeten zijn.
Waarom het dan nog niet werkt zou ik zo ook niet weten.

Het probleem van het niet kunnen starten van de macro zat 'm in een beveiliging van de macro-uitvoering. Het was opgelost na een herstart van Word.

Maar nu het volgende:
Het is mijn bedoeling de macro te starten terwijl er een groot document geopend is. De macro zorgt dan voor het zoeken/vervangen van de verschillende strings. Moet hm20171021.txt niet worden ingelezen in een nieuw document?
Als ik probeer de macro stap voor stap uit te voeren, zie ik niet of het inlezen van hm20171021.txt gelukt is en wat de volgende opdrachten zijn?
Bij de eerste stap is de eerste regel geel gemarkeerd, maar als ik daarna op Doorgaan/F5/het groene pijltje klik, gebeurt er niets zichtbaars.
Wat doe ik of waar zit de fout?

Vriendelijke groet,
Guido
 
Zonder het Word document en dat aangepaste tekstbestand kan ik daar niks over zeggen.
 
Zonder het Word document en dat aangepaste tekstbestand kan ik daar niks over zeggen.

Oeps, vergeten mee te zenden. Hierbij alsnog.
Hmmm, uploaden van bestanden mislukt. Straks nieuwe poging.

Vriendelijke groet,
Guido
 
Twee bestanden selecteren uploaden lukt niet.
Misschien dat het per bestand wel lukt. In de bijlage zit nu het hulpbestand met de vervangen teksten.
Het bestand waarin de veranderingen moeten worden aangebracht, is vrij groot (16 MB; gezipt 2,5 MB).

Vriendelijke groet,
Guido
 

Bijlagen

  • hm20171021.txt
    7,1 KB · Weergaven: 56
Laatst bewerkt:
In dat tekstbestand zie ik met Kladblok nog steeds geen lege regels.
 
Als ik het grote tekstbestand waarin de wijzigingen moeten worden aangebracht (gezipt) probeer te uploaden, krijg ik een foutmelding. Wat kan hiervan de oorzaak zijn?

Vriendelijke groet,
Guido
 

Bijlagen

  • hm20171022.JPG
    hm20171022.JPG
    59,5 KB · Weergaven: 66
Je kan een bestand van maximaal 100KB uploaden.
Zet 'm op een filehost en plaats de link dan hier.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan