Создать макрос для преобразования текста в гиперссылку, объединяя отображаемый текст в стандартный формат - PullRequest
0 голосов
/ 08 мая 2018

Мне нужно создать большое количество гиперссылок для элементов заявки, где единственной частью URL, которая изменяется, является идентификатор заявки. Я новичок в этом, и большая часть помощи VBA для Excel. Моя проблема существует в MS-Word, и его трудно передать синтаксис.

Я ожидаю, что пользователь вызовет макрос после ввода 6-значного идентификатора билета. В идеале макрос должен автоматически выбирать последнее слово, введенное пользователем, и добавлять его к сегменту URL, который никогда не изменяется.

Я попытался записать макрос, который копирует последнее набранное слово и объединяет его в конец стандартного URL.

Я могу успешно делать все с помощью сочетаний клавиш, поэтому я подумал, что все будет в порядке. Проблема в том, что макрос просто использует текст из примера записи. Это также превращает мой текст для отображения в тексте примера.

Превращение любого текста в ссылку, которую я использовал в качестве примера в записи.

Я не могу понять, как заставить VBA использовать скопированный текст для отображаемого текста и последние 6 цифр URL.

См. Синтаксис VBA ниже

Sub textToHyperlink()
'
    Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
    Selection.Copy
    ChangeFileOpenDirectory _
        "/Users/chris/Library/Containers/com.microsoft.Word/Data/Library/Preferences/AutoRecovery/"
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
        "https://someboringwebsite.com/WorkItem&id=123456", SubAddress:="", ScreenTip:="", _
        TextToDisplay:="123456"

End Sub

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Ниже приводится ответ на ваше разъяснение в комментарии (который я включил в ваш вопрос). Есть две вариации

1) Следуя вашей предпосылке, работа с пользовательским вводом. Обратите внимание, что это займет предыдущее слово, независимо от того, где оно находится в тексте. И в случае, если пользователь мог ввести пробел (или много пробелов), все пробелы удаляются из конца этого слова. (Эти строки кода закомментированы.)

2) Вам (и пользователю) может быть проще работать с InputBox, так что пользователь может напрямую ввести идентификатор заявки - не беспокоясь о том, где он находится в тексте, пробелах или чем-то еще. Гиперссылка вставляется при выборе.

Sub textToHyperlink()
'
    Dim sID As String
'    Dim rng As word.Range
'
'    Set rng = Selection.Range
'    rng.MoveStart wdWord, -1
'    sID = Trim(rng.Text)
    sID = InputBox("Please enter the ticket ID")
    ActiveDocument.Hyperlinks.Add anchor:=rng, Address:= _
        "https://someboringwebsite.com/WorkItem&id=" & sID, SubAddress:="", ScreenTip:="", _
        TextToDisplay:=sID

End Sub
0 голосов
/ 08 мая 2018

Это может сработать:

Sub textToHyperlink()
'
    Dim TicketID As String
    TicketID = Selection.Range.Text 
    'You may need to clean up TicketID (remove <CR> etc.) before 
    'sticking it in the hyperlink. Depends on what's in Selection.

    ' Not sure what this line does
    ' ChangeFileOpenDirectory _
        "/Users/chris/Library/Containers/com.microsoft.Word/Data/Library/Preferences/AutoRecovery/"
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
        "https://someboringwebsite.com/WorkItem&id=" & TicketID, SubAddress:="", ScreenTip:="", _
        TextToDisplay:=TicketID

End Sub

Надеюсь, что поможет.

...