我必须为故障单项创建大量超链接,其中更改的URL的唯一部分是故障单ID。我是新手,VBA的大部分帮助都是为了excel。我的问题存在于MS-word中,并且难以传递语法。
我希望用户在输入6位票证ID后调用宏。理想情况下,宏会自动选择用户输入的最后一个单词,并将其附加到永不更改的网址段。
我尝试录制一个宏,该宏复制输入的最后一个单词,然后将其连接到标准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
答案 0 :(得分:1)
这可能有效:
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
希望有所帮助。
答案 1 :(得分:1)
以下是对您在评论中的澄清的回应(我已将其纳入您的问题)。有两种变化
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