我正在制作一个电子表格,想在其中粘贴一个又长又丑的链接。我希望自动格式化,以便接受这个长链接并创建一个“友好”链接。我试图省去进入链接菜单执行此操作的步骤。我不知道是否有简单的方法可以做到这一点,或者我是否需要一些宏。
谢谢!
答案1
您可以将此宏放入 ThisWorkbook 模块中:
Option Explicit
Public Sub PasteFriendlyURL()
Dim myLink As Hyperlink
Dim displayText As String
displayText = ""
displayText = InputBox("Enter the display text for your URL")
If displayText = "" Then
displayText = "Pasted Link"
End If
ActiveCell.PasteSpecial
Set myLink = ActiveCell.Hyperlinks.Add(ActiveCell, ActiveCell.Value)
myLink.TextToDisplay = displayText
End Sub
我已添加快捷方式Ctrl+ Shift+K来使用此宏,方法是通过编辑 Excel 中的宏对话框中的选项(Alt+F8将打开宏对话框):
因此,我复制一个链接,然后选择一个单元格并按Ctrl++ Shift:K
如果您复制的 URL 无效,这当然不会有好的效果。您可以选择是否在过程中写入一些错误处理。根据谁将使用它,它可能保持原样就没问题,或者您可能需要使其更强大。
答案2
FlexYourData 的答案是一个很好的例子,特别是如果你习惯使用Ctrl+K输入超链接。根据你的使用情况,你还可以编写一个 VBA 例程,每次你添加 Excel 自动格式化为超链接的文本时都会触发。我写了下面的示例,它位于 ThisWorkbook 模块中,每次你在任意工作表中添加超链接时都会触发。你可能想要调整消息文本之类的内容或将其限制在特定的工作表中。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim url As String
Dim msg As String
Dim txt As String
On Error Resume Next
url = Target.Hyperlinks(1).Address
If Len(url) > 0 Then
msg = "It looks like you've pasted a hyperlink. Would you like to display friendly text instead of the URL?"
If MsgBox(msg, vbYesNo + vbDefaultButton1, "Format Hyperlink") = vbYes Then
txt = InputBox("Friendly text to display instead of the URL:", "Format Hyperlink", url)
Application.EnableEvents = False
Target.Hyperlinks.Add Target, url, , , txt
Application.EnableEvents = True
End If
End If
End Sub
我知道至少有一个怪癖,将超链接粘贴到多个单元格中会触发事件,但它只会编辑左上角单元格的超链接。不过,我想这并不常见。它会还每当您通过在 Excel 中插入超链接创建已经友好的超链接时触发。