超链接(1).address只返回部分地址

mat*_*103 5 excel sharepoint vba hyperlink excel-vba

我正在处理以下代码,该代码将根据链接在单击时是否有效来重新格式化包含链接的单元格:

Private Sub worksheet_followhyperlink(ByVal HL As HYPERLINK)
Dim linkReq As Object
Dim linkStatus As Integer

Application.ScreenUpdating = False
On Error GoTo linkError
Set linkReq = New MSXML2.XMLHTTP60
With linkReq
    .Open "GET", HL.address, False
    .Send
End With
linkStatus = linkReq.Status

If linkStatus = 404 Then HL.Parent.Interior.Color = rgbPink
If linkStatus <> 404 Then HL.Parent.Interior.Pattern = xlNone

If HL.Parent.Interior.Pattern = xlNone Then GoTo exitSub
Application.ScreenUpdating = True
MsgBox("Link is broken")

exitSub:
Application.ScreenUpdating = True
Exit Sub

linkError:
linkStatus = 404
Resume Next
End Sub
Run Code Online (Sandbox Code Playgroud)

代码昨天工作得很好!但现在,它将所有内容都返回为"404"并将单元格标记为粉红色,即使链接有效.调试表明HL.address的值是"文件夹/ Document.pdf",而不是" HTTPS://website/folder/Document.pdf ".此excel文档通过sharepoint 托管在" https:// website "上.

由于截断,代码无法正常工作.

有没有办法从excel超链接中提取完整的URL,而不是截断,无论网址的大小如何?

Tom*_*dle 2

Excel 似乎正在将您的超链接地址从绝对地址更改为相对地址。

您可以尝试通过更改所谓的“超链接基址”来强制绝对地址。为此,请转到:文件 > 信息 > 显示所有属性 > 超链接库(位于屏幕右侧)并将其更改为“x”。

来自 Microsoft 支持站点的参考:

https://support.microsoft.com/en-us/help/903163/how-to-create-absolute-hyperlinks-and-relative-hyperlinks-in-word-docu

(文章介绍了 MS Word 的解决方案,但它也应该适用于 MS Excel)

希望有帮助。

  • 除了汤姆的回答之外,您可以使用`ActiveWorkbook.BuiltinDocumentProperties("Hyperlink Base")`以编程方式读/写超链接库 - (引用工作簿的其他方法也可用`;-)`) (2认同)