Vba 创建宏,将文本转换为超链接,将显示文本连接到标准格式

Vba 创建宏,将文本转换为超链接,将显示文本连接到标准格式,vba,hyperlink,ms-word,Vba,Hyperlink,Ms Word,我必须为票证项目创建大量的超链接,其中URL中唯一更改的部分是票证ID。我对此不熟悉,VBA帮助的大部分内容都是针对excel的。我的问题存在于MS word中,很难转换语法 我希望用户在输入6位票证ID后调用宏。理想情况下,宏将自动选择用户键入的最后一个单词,并将其附加到永不更改的url段 我试图录制一个宏,该宏复制键入的最后一个单词,然后将其连接到标准URL的末尾 我可以成功地用键盘快捷键做任何事情,所以我想我会被设置好的。问题是宏只使用录制示例中的文本。它还将要显示的文本转换为示例文本 将

我必须为票证项目创建大量的超链接,其中URL中唯一更改的部分是票证ID。我对此不熟悉,VBA帮助的大部分内容都是针对excel的。我的问题存在于MS word中,很难转换语法

我希望用户在输入6位票证ID后调用宏。理想情况下,宏将自动选择用户键入的最后一个单词,并将其附加到永不更改的url段

我试图录制一个宏,该宏复制键入的最后一个单词,然后将其连接到标准URL的末尾

我可以成功地用键盘快捷键做任何事情,所以我想我会被设置好的。问题是宏只使用录制示例中的文本。它还将要显示的文本转换为示例文本

将任何文本转换为我在录音中用作示例的链接

我不知道如何让VBA使用复制的文本来显示文本和URL的最后6位数字

请参见下面的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
这可能会起作用:

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
Sub textToHyperlink()
'
Dim TicketID作为字符串
TicketID=Selection.Range.Text
'您可能需要在
'将其粘贴在超链接中。取决于选择的内容。
“不知道这行是干什么的
'ChangeFileOpenDirectory_
“/Users/chris/Library/Containers/com.microsoft.Word/Data/Library/Preferences/AutoRecovery/”
ActiveDocument.Hyperlinks.Add锚定:=选择范围,地址:=_
"https://someboringwebsite.com/WorkItem&id=&TicketID,子地址:=“”,屏幕提示:=“”_
TextToDisplay:=TicketID
端接头

希望这能有所帮助。

以下是对您在评论中澄清的回应(我已将其纳入您的问题中)。有两种变体

1) 遵循您的前提,使用用户输入。请注意,这将采用前面的单词,无论它在文本中的什么位置。在这种情况下,用户可能键入了一个空格(或多个空格),所有空格都将从该单词的末尾删除。(这些代码行已注释掉。)

2) 您(和用户)可能会发现使用InputBox更简单,这样用户就可以直接键入票证id,而不必担心它在文本、空格或任何内容中的位置。超链接将插入到所选内容处

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

非常感谢你!我比我想象的要近。我所做的只是在定义TicketID之前添加“Selection.HomeKey Unit:=wdLine,Extend:=wdExtend”。这会自动高亮显示光标左侧的单词。将此宏映射到快捷键将节省大量时间