Макрос VBA в Word: как манипулировать текстом по вспомогательному адресу, учитывая ссылку на него?

#vba

#vba

Вопрос:

Документ, с которым я работаю, полон внутренних гиперссылок, созданных Endnote, с чем-то вроде «#_ENREF_76» в качестве адреса. Я пытаюсь написать макрос, который циклически перебирает все гиперссылки, копирует текст по адресу в ссылке и выполняет с ним другие действия. Нравится:

 For i = ActiveDocument.Hyperlinks.Count To 1 Step -1
    With ActiveDocument.Hyperlinks(i)
        myText = .get_The_Text_At_The_Address_In_The_Link
        doStuff(myText)
    End With
Next i
  

Возможно ли это вообще?

Ответ №1:

Я не очень хорошо знаком с Word, но это сработало бы, если ваши связанные закладки действительно содержат текст, который вы хотите сохранить.

 Sub Tester()
    Dim h As Hyperlink, b As Bookmark
    For Each h In ActiveDocument.Hyperlinks
        'Debug.Print h.TextToDisplay, h.SubAddress

        On Error Resume Next
        Set b = ActiveDocument.Bookmarks(h.SubAddress)
        On Error GoTo 0

        If Not b Is Nothing Then
            Debug.Print h.SubAddress amp; " contains '" amp; b.Range.Text amp; "'"
        End If

    Next h
End Sub