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.