wymagany
Chcę znaleźć wszystkie wystąpienia pojedynczego tekstu w dokumencie MS Word, uczynić każde wystąpienie hiperłączem i zmienić ogólny styl hiperłącza na jeden z moich wybranych.
Co ja mam
Ponieważ nie mam pojęcia, jak osiągnąć powyższy wymóg jako całość, zacząłem od jego części, a mianowicie znalezienia jednego wystąpienia i dostosowania go.
Nagrałem więc makro, co spowodowało następujący kod. Ten kod zaadaptowałem, aby sub mógł pobrać parametry dla hyperlinkText i podadresu hiperłącza :
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
Dzięki temu łatwo jest wywołać sub dla wielu wystąpień słów, takich jak:
Call AutoDetectHyperlinksForText("broadcasts", "_broadcastService", "Subtle Emphasis")
Pytanie
Jak mogę dostosować to makro, aby sprawdzało cały dokument?
Pytanie bonusowe
Czy istnieje sposób zmodyfikowania powyższego skryptu, aby móc zapisać mój wybór i usunąć potrzebę korzystania z niego .MoveLeft
?
W pseudokodzie byłoby to mniej więcej tak:
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")