emailadressen actief maken (hyperlinken

Status
Niet open voor verdere reacties.

Plotinus

Gebruiker
Lid geworden
25 mrt 2007
Berichten
649
Ik heb een Word-document met daarin niet actieve e-mailadressen. Middels eenvoudige VBA-code zijn deze gemakkelijk actief te maken:
Code:
Sub hyperlinken()
    Options.AutoFormatReplaceHyperlinks = True
    Selection.Range.AutoFormat
End Sub

Het probleem met deze code is echter dat er ook harde returns uit de tekst worden gehaald, dus lege regels worden gewist. En dat wil ik natuurlijk niet. Iemand een idee hoe dit te voorkomen?

Bijgaand document illustreert het probleem.
 

Bijlagen

  • testdocument.docx
    29,8 KB · Weergaven: 40
Het probleem met deze code is echter dat er ook harde returns uit de tekst worden gehaald, dus lege regels worden gewist. En dat wil ik natuurlijk niet.
Huh? Dat zou het eerste moeten zijn dat je in een document doet: de overtollige (want lege) regels er uithalen. Zeker niet extra toevoegen! Witruimte mag in mijn optiek geen tekstwaarde zijn, maar moet in de Alinea-opmaak zitten. Dan heb je dit probleem dus ook nooit meer; noch het probleem dat er lege alinea’s boven aan een pagina kunnen staan. Die zijn er dan namelijk niet.
 
Je hebt natuurlijk gelijk, maar je weet hoe het gaat: iets groeit in de loop der tijd organisch en dijt uit en dijt uit. Omdat allemaal het herstylen ben ik wel even bezig. Is het niet mogelijk dat alleen de e-mailadressen worden aangepakt en het overige ongewijzigd blijft?
 
Ik ben inmiddels wel zo ver dat ik de e-mailadressen in het document vind met

Code:
[A-z,0-9]{1;}\@[A-z,0-9,\.]{1;}

Maar hoe dit in een code te gieten om te hyperlinken, is nog even zoeken.
 
Als je ervoor zorgt dat voor ieder emailadres een spatie staat en erachter ook, is het een fluitje van een cent.
 
Het volgt werkt voor mij, maar kan wellicht slimmer:
Code:
Sub testen()
Selection.HomeKey Unit:=wdStory
Mailadres = "test"
Do While Len(Mailadres) > 2
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "[A-z,0-9,\.]{1;}\@[A-z,0-9,\.]{1;}"
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Mailadres = Selection
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="mailto:" & Mailadres, TextToDisplay:=Mailadres
Loop
End Sub

Vervelend is ook dat als er een leesteken volgt op het mailadres, deze ook mee gaat in de hyperlink.

Iemand een betere oplossing?
 
Je bedoelt wellicht #6 snb(?)

Nee, niet vergeten. Maar lastig blijft het. Is er geen andere oplossing, dan moet ik enkele zinnen omgooien, zodat er inderdaad een spatie voor en achter een e-mailadres staat. Is qua werk te overzien. Maar liefst heb je iets universeels natuurlijk.
 
En hier de oplossing die werkt:

Code:
Sub mailadressen()
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .Text = "<[0-9A-Za-z.]{1;}\@[!. ]{1;}.*>"
        .MatchWildcards = True
        .ClearFormatting
    End With
    Do While Selection.Find.Execute = True
        ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="mailto:" & Selection, TextToDisplay:=Selection
    Loop
   Selection.HomeKey Unit:=wdStory
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan