【问题标题】:Update hyperlinks with an excel Macro使用 excel 宏更新超链接
【发布时间】:2020-05-08 01:07:40
【问题描述】:

enter image description here我正在尝试为 Excel 工作表上的所有嵌入式超链接添加扩展。我一次做一个单元格记录了一个宏,但效率不高。有人可以帮我简化宏,以便它知道查看所有超链接、打开并在现有超链接的末尾插入附加信息。

Sub Macro5()
'
' Macro5 Macro
' test
'
' Keyboard Shortcut: Ctrl+Shift+H
'
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "?u=76208058&auth=true"
    Range("C2").Select
    Selection.Hyperlinks(1).Address = _
        "https://www.linkedin.com/learning/teaching-techniques-classroom-management?u=76208058&auth=true"
    Range("C3").Select
    Selection.Hyperlinks(1).Address = _
        "https://www.linkedin.com/learning/learning-how-to-increase-learner-engagement?u=76208058&auth=true"
    Range("C4").Select
    Selection.Hyperlinks(1).Address = _
        "https://www.linkedin.com/learning/teaching-with-technology?u=76208058&auth=true"
End Sub

【问题讨论】:

    标签: excel vba hyperlink


    【解决方案1】:

    向超链接添加字符串

    • 第一个代码改变了所有单元格的超链接地址 指定的工作表,而第二个仅更改超链接 工作表指定列中的地址。
    • 适当调整常量部分中的值。
    • If 语句检查当前超链接是否已经 修改。

    守则

    Option Explicit
    
    ' For the whole sheet:
    Sub addTailSheet()
    
    ' Keyboard Shortcut: Ctrl+Shift+H
    
        Const SheetName As String = "Sheet1"
        Const TailCell As String = "H1"
    
        Dim ws As Worksheet
        Dim hyp As Hyperlink
        Dim Tail As String
    
        Set ws = ThisWorkbook.Worksheets(SheetName)
    
        With ws
            Tail = .Range(TailCell).Value
            For Each hyp In .Hyperlinks
                If Right(hyp.Address, Len(Tail)) <> Tail Then
                    hyp.Address = hyp.Address & Tail
                End If
            Next
        End With
    
        MsgBox "Hyperlinks modified."
    
    End Sub
    
    ' For a column:
    Sub addTailColumn()
    
    ' Keyboard Shortcut: Ctrl+Shift+H
    
        Const SheetName As String = "Sheet1"
        Const TailCell As String = "H1"
        Const TailColumn As Variant = "C"  ' e.g. "C" or 3
    
        Dim ws As Worksheet
        Dim hyp As Hyperlink
        Dim Tail As String
    
        Set ws = ThisWorkbook.Worksheets(SheetName)
    
        With ws.Columns(TailColumn)
            Tail = .Parent.Range(TailCell).Value
            For Each hyp In .Hyperlinks
                If Right(hyp.Address, Len(Tail)) <> Tail Then
                    hyp.Address = hyp.Address & Tail
                End If
            Next
        End With
    
        MsgBox "Hyperlinks modified."
    
    End Sub
    

    【讨论】:

    • 您好@VBasic2008,感谢您的支持。我对 VB 宏非常陌生,很难理解什么是常量,我在寻找哪些值?此外,当我运行宏时,以下行突出显示为亮黄色 - 你能解释一下这是为什么吗? Set ws = ThisWorkbook.Worksheets(SheetName) 感谢您对像我这样的新人的耐心。我更新了我的问题并附上了我的 Visual Basic UI 的屏幕截图作为参考。
    • 好的,我改变了一件事,现在它正在工作 Const SheetName As String = "ActiveSheet" 但是有没有办法让我确定总是从特定工作表中获取“Hi”,这样我就不会不必确保每张纸中的“HI”都具有价值吗?
    • @PamelaTellez:你把代码放错了地方。在 VBE 中,您应该 right-click 您的 VBAProject (Master Campus...) 并选择 Insert &gt; Module。然后当您在your VBAProject 下选择Modules 时,双击Module1 并将代码复制/粘贴到那里。然后您必须将"Sheet1" 更改为要更改超链接的工作表名称。工作表名称是括号中的名称()。如果要更改多张纸上的超链接,则必须修改代码。您可以随时通过帖子下方的edit 按钮编辑您的问题以添加更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多