Я для этой цели накатал два этих макроса. Единственное что нужно сделать, это в зависимости от книги менять запрос в строке поиска
Первый макрос расставляет закладки, второй ставит на них гипрессылки
Sub AddMark()
‘
‘ Ìàêðîñ1 Ìàêðîñ
‘ Ìàêðîñ çàïèñàí 2012/01/21 Admin
‘
nn = 200
‘While Selection.Find.Execute = True
‘i = 0
‘While Selection.Text <Selection> 0
ActiveDocument.Hyperlinks(1).Delete
Wend
Application.Options.AutoFormatAsYouTypeReplaceHyperlinks = False Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
For i = nn To 0 Step -1 ‘Ïîèñê ñòðàíö
SS2 = Trim(i)
SS1 = "^m" + SS2 + "^p" Selection.Find.ClearFormatting
With Selection.Find
.Text = SS1
.Replacement.Text = ""
.Forward = False
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
‘Ðàññòàíîâêà çàêëàäîê
If Selection.Find.Execute Then
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = SS2
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="m" + Trim(i)
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
End If
Next i
End Sub
Sub SetLink()
‘
‘ Ìàêðîñ1 Ìàêðîñ
‘ Ìàêðîñ çàïèñàí 2012/01/21 Admin
‘
nn = 200
‘While Selection.Find.Execute = True
‘i = 0
‘While Selection.Text <> "}"
‘ Selection.MoveRight Unit:=wdCharacter, Count:=1
‘ i = i + 1
‘Wend
For i = nn To 0 Step -1 ‘Ïîèñê ñòðàíö
SS2 = Trim(i)
SS1 = "òêðîé ñòðàíèö? " + SS2 + "[!][0-9]"
work = True
While work = True Selection.Find.ClearFormatting
With Selection.Find
.Text = SS1
.Replacement.Text = ""
.Forward = False
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With ‘Ðàññòàíîâêà çàêëàäîê If Selection.Find.Execute Then Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = SS2
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", _
SubAddress:="m" + SS2, ScreenTip:="", TextToDisplay:="@" + Selection.Text
Selection.HomeKey Unit:=wdLine
Else
work = False
End If
Wend
Next i
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "@"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll End Sub