Finden Sie alle Vorkommen eines Textes und machen Sie ihn mit einem Makro zu einem Hyperlink

Finden Sie alle Vorkommen eines Textes und machen Sie ihn mit einem Makro zu einem Hyperlink

Erforderlich

Ich möchte alle Vorkommen eines einzelnen Textes in einem MS Word-Dokument finden, jedes Vorkommen in einen Hyperlink umwandeln und den allgemeinen Hyperlink-Stil in einen meiner Wahl ändern.

Was ich habe

Da ich keine Ahnung habe, wie ich die oben genannte Anforderung insgesamt erfüllen kann, habe ich mit einem Teil davon begonnen, nämlich eine einzelne Instanz zu finden und sie anzupassen.

Also habe ich ein Makro aufgezeichnet, das den folgenden Code ergab. Diesen Code habe ich so angepasst, dass das Sub Parameter für diehyperlinkTextund der HyperlinkUnteradresse:

Sub AutoDetectHyperlinksForText(hyperlinkText As String, subaddress As String, style As String)
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = hyperlinkText
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", _
        subaddress:=subaddress, ScreenTip:="", TextToDisplay:= _
        hyperlinkText
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Style = ActiveDocument.Styles(style)
End Sub

Damit ist es einfach,Anrufdas Sub für mehrere Wortvorkommen, wie zum Beispiel:

Call AutoDetectHyperlinksForText("broadcasts", "_broadcastService", "Subtle Emphasis")

Frage

Wie kann ich dieses Makro anpassen, damit es das komplette Dokument prüft?

Bonus-Frage

Gibt es eine Möglichkeit, das obige Skript so zu ändern, dass ich meine Auswahl speichern und das nicht mehr benötigen kann .MoveLeft?

In Pseudocode sähe das etwa so aus:

Dim mySelect as Selection
mySelect = Selection.Find.Execute
ActiveDocument.Hyperlinks.Add Anchor:=mySelect.Range, Address:="", _
    subaddress:=subaddress, ScreenTip:="", TextToDisplay:= _
    hyperlinkText
mySelect.Style = ActiveDocument.Styles("Subtle Emphasis")

Antwort1

Dies findet das Wort "google" (nicht googles oder googled) und verlinkt es mithttp:\\google.com

Es gilt auch der Stil

Sub FindAndHyperlink()
    'define the style
    Dim strStyle As String
    strStyle = "Subtle Emphasis"
    'set the search range
    Dim rngSearch As Range
    Set rngSearch = ActiveDocument.Range
    'set the search string
    Dim strSearch As String
    strSearch = "google"
    'set the target address for the hyperlink
    Dim strAddress As String
    strAddress = "http:\\google.com"

    With rngSearch.Find
        Do While .Execute(findText:=strSearch, MatchWholeWord:=True, Forward:=True) = True
            With rngSearch 'we will work with what is found as it will be the selection
                ActiveDocument.Hyperlinks.Add Anchor:=rngSearch, Address:=strAddress
                .Style = ActiveDocument.Styles(strStyle) 'throw the style on it after the link
            End With
            rngSearch.Collapse Direction:=wdCollapseEnd
            'keep it moving
        Loop
    End With
End Sub

Wenn Sie Argumente übergeben möchten, können Sie das natürlich tun, damit es mit Ihren Parametern aufgerufen werden kann, aber dies ist die Grundlage dessen, was Sie benötigen.

verwandte Informationen