必須
MS Word文書内の単一のテキストのすべての出現箇所を検索し、各出現箇所をハイパーリンクにして、一般的なハイパーリンクスタイルを自分の選択の1つに変更したいと思います。
私が持っているもの
上記の要件を全体としてどのように達成するかがわからないため、その一部、つまり単一のインスタンスを見つけてそれを適応させることから始めました。
そこで、マクロを記録したところ、次のようなコードになりました。サブがhyperlinkTextとハイパーリンクsubaddressのパラメーターを取ることができるように私が適応させたそのコード:
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
これにより、次のような複数のWordインスタンスのサブを呼び出しするのは簡単です。
Call AutoDetectHyperlinksForText("broadcasts", "_broadcastService", "Subtle Emphasis")
質問
このマクロを適応させて、ドキュメント全体をチェックするにはどうすればよいですか?
ボーナス質問
上記のスクリプトを変更して、選択内容を保存し、.MoveLeft
の必要性をなくす方法はありますか?
擬似コードでは、次のようになります。
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")
これにより、「google」(googlesやgoogledではない)という単語が検索され、http:\\google.com
にハイパーリンクされます。
それはまたスタイルを適用します
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
明らかに、引数を渡したい場合は、パラメーターを使用して呼び出すことができるようにすることができますが、これが必要なものの基礎です。