【问题标题】:Open hyperlink within the VBA在 VBA 中打开超链接
【发布时间】:2019-04-15 16:07:57
【问题描述】:

我有一个 Excel 文件。在第一张表中有多行超链接(相对文件路径 = 文件位于 excel 文件旁边)。

在 VBA 中,我将获取包含超链接的单元格。如何在 VBA 中打开后跟超链接的文件?其实我想打开超链接(实际打开文件)

【问题讨论】:

标签: vba excel


【解决方案1】:

如果工作表中的超链接在 =hyperlink() 公式中,我们:

  • 抓住公式
  • 解析得到url
  • 点击超链接:


代码如下:

Sub ClickByVba()
    ary = Split(ActiveCell.Formula, Chr(34))
    ActiveWorkbook.FollowHyperlink Address:=ary(1)
End Sub

这对网络链接和文件链接都有效。
如果链接是文件,则文件将被打开(如果尚未打开),跳转将制作。

【讨论】:

  • 这可行,但看起来超链接是在另一个会话中打开的?至少在 Chrome 中,使用这种方法需要在已经登录的网站上登录。如果我只是复制并粘贴链接,则不需要登录
  • @cyberponk 您对网站链接的看法是正确的。
【解决方案2】:

正如我对 Gary 的回答所评论的,ActiveWorkbook.FollowHyperlink 方法有效,但如果您的网站需要登录,它会在您每次打开链接时询问您的凭据

如果您想打开一个网站并保存您的凭据,您可以使用这个其他功能:

Sub OpenHyperlink(ByVal link As String)
   'Escape chars that cmd.exe uses
    link = Replace(link, "^", "^^")
    link = Replace(link, "|", "^|")
    link = Replace(link, "&", "^&")
    'Open default web browser
    Shell "CMD.EXE /C START " & link, vbHide
End Sub

【讨论】:

    【解决方案3】:

    看看Hyperlink对象引用:

    https://msdn.microsoft.com/en-us/library/office/ff835563.aspx

    您应该能够使用.Follow 方法打开文件,或者如果这不起作用,您可以随时获取.Address 属性并将其传递给Workbooks.Open 方法。

    还将Excel Object Model Reference 加入书签以备将来使用:)

    不过,我认为这不适用于公式超链接,所以如果这是您的情况,那么请改为:

    Sub h()
        Dim cl As Range
        Dim h As String
        Set cl = Range("E13") 'Modify to the cell containing your =HYPERLINK formula
        h = Replace(cl.Formula, "=HYPERLINK(", "")
        h = Replace(h, ")", "")
        h = Replace(h, Chr(34), "")
        h = Split(h, ",")(0)
    
        Dim wb As Workbook
        Set wb = Workbooks.Open(h)
    End Sub
    

    【讨论】:

    • 但是 'workbooks.open(h)' 在工作簿中打开文件。我要打开文件
    • 请说明您在做什么以及您的实际期望是什么。如果文件路径是在 Excel 中无法(或您不希望)打开的任何内容,则需要使用 SHELL 命令打开它。
    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 2015-11-07
    • 2013-01-03
    • 1970-01-01
    • 2013-10-06
    • 2016-09-06
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多