Найти конкретные строки в текстовом документе и гиперссылку на PDF, расположенные в ActiveDocument.Path - PullRequest
0 голосов
/ 27 августа 2018

Мой пример как таковой.У меня есть документ Word, который выглядит следующим образом:

ERN.001.001.0001

Яблоки и апельсины

ABC.001.001.0002

ERN.001.001.0004

Клубника

ERN.001.001.0005

Также в ActiveDocument.Path у меня есть следующие файлы:

ERN.001.001.0001.pdf, ABC.001.001.0002.pdf, ERN.001.001.0004.pdf, ERN.001.001.0005.pdf

Я хочу создать скрипт, который ищет документы в формате PDF в текстовом документе и создает гиперссылки на нихобратно в каталог.

Мой текущий код выглядит следующим образом:

Sub AddHyperlinks()
Dim r1 As Range

Dim SearchString As String

        SearchString = "[A-Z]{1-3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,4}"

        Set r1 = ActiveDocument.Content

With r1.Find
        .ClearFormatting
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .Text = SearchString


Do While .Execute(Forward = True) = True
        r1.Hyperlinks.Add Anchor:=r1, _
        Address:=ActiveDocument.Path & "\" & r1.Text & ".pdf", _
        SubAddress:="", ScreenTip:="", TextToDisplay:=r1.Text

        r1.Collapse wdCollapseStart


Loop

End With
End Sub

Когда я запускаю этот скрипт, он находит SearchString, но, похоже, он не понимает, что я пытаюсьгиперссылка.У кого-нибудь есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 27 августа 2018

Скопируйте и вставьте этот код в редактор VBA и запустите макрос «CreateLinks».Твой паттерн тоже казался неправильным, хотя я не знаю, почему он сработал для тебя ...

Sub CreateLinks()

Dim Rng As Range: Set Rng = ActiveDocument.Range
Dim SearchString$, Link$
Dim strPath$: strPath = ActiveDocument.Path & "\"

SearchString = "[A-Z]{3}[.][0-9]{3}[.][0-9]{3}[.][0-9]{4}" ' If the text characters are not fixed, then use: [A-Z]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,4}
    With Rng.Find
    .MatchWildcards = True
        Do While .Execute(findText:=SearchString, Forward:=False) = True
            Link = strPath & Rng & ".pdf"

                ActiveDocument.Hyperlinks.Add Anchor:=Rng, _
                Address:=Link, _
                SubAddress:="", ScreenTip:="", TextToDisplay:=Rng.Text
                Rng.Collapse wdCollapseStart

        Loop
    End With
End Sub

edit - результат:

enter image description here

...