3

У меня довольно большой файл Word (+1 100 страниц), который содержит простые текстовые ссылки в СМИ. Например, документ Word содержит:

Лидер новостей (AP), штатный сотрудник полиции, который умер в ее первую смену, был похоронен http://www.newsleader.com/story/news/nation-now/2016/03/01/va-police-officer-who покоился в первой смене /81183272 / 03.01.16

Ливингстон Daily Va. Полицейский, который умер в ее первой смене, похоронен http://www.livingstondaily.com/story/news/nation-now/2016/03/01/va-police-officer-who-died-her -первая смена /81183272 / 03.01.16

(В документе Word эти ссылки не являются гиперссылками, просто текст!)

В настоящее время способ, которым мы собираем данные и объединяем их в Word, форматирует ссылки как обычный текст, а не как гиперссылки.

Я хотел бы использовать VBA для преобразования всех этих текстовых ссылок в интерактивные гиперссылки, сохраняя текст ссылки (например, гиперссылки с текстом привязки оставшейся ссылки).

Я нашел примеры кода для поиска и замены определенных строк конкретными ссылками, например:

Sub FindAndHyperlink()
    'define the style
    Dim strStyle As String
    strStyle = "Normal"
    'set the search range
    Dim rngSearch As Range
    Set rngSearch = ActiveDocument.Range
    'set the search string
    Dim strSearch As String
    strSearch = "tuesday"
    '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

Но я не могу понять, как динамически изменять функции поиска / выбора / замены.

Что бы я хотел:

  1. Искать "http"
  2. Выбрать всю гиперссылку
  3. Сделать гиперссылку, не меняя якорный текст
  4. Повторите для всех случаев текстовых гиперссылок

Какие-либо предложения?

1 ответ1

3

Попробуй это:

Sub Hyperlinker()

    Dim Rng As Range

    Set Rng = ActiveDocument.Range
    With Rng.Find
        Do While .Execute(findText:="http:", Forward:=False) = True
            Rng.MoveEndUntil (" ")
            ActiveDocument.Hyperlinks.Add _
                Anchor:=Rng, _
                Address:=Rng.Text, _
                SubAddress:="", _
                ScreenTip:="", _
                TextToDisplay:=Rng.Text
            Rng.Collapse wdCollapseStart
        Loop
    End With

End Sub

После завершения их замены вам, возможно, придется сохранить и снова открыть документ Word, чтобы ссылки начали функционировать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .