excel - hyperlinks(1).address 仅返回部分地址

标签 excel sharepoint hyperlink 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

昨天的代码运行得很好!但现在,即使链接有效,它也会将所有内容返回为“404”并将单元格标记为粉红色。调试显示HL.address的值为“folder/Document.pdf”而不是“https://website/folder/Document.pdf”。此 Excel 文档通过 sharepoint 托管在“https://website”上。

由于截断,代码无法运行。

有没有一种方法可以从 Excel 超链接中提取完整的 url,而无需截断,无论 url 的大小如何?

最佳答案

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)

希望有帮助。

关于excel - hyperlinks(1).address 仅返回部分地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239925/

相关文章:

excel - 是否立即声明了电子表格中所有模块中的所有全局变量?

vba - MS Excel VBA - 在类内设置 ADODB.Connection 的问题

sharepoint - 搜索网站返回 403 访问被拒绝

python-3.x - 共享点文件夹应用程序权限 - 未经授权

Jquery:使整个 block 可点击,同时保留在新选项卡/窗口中打开的能力

vba - 阅读工作簿而不用 ADO 打开它

c# - 带有 ISAPI 文件夹的命名空间标准

php - 将 php 表单链接到数据库

hyperlink - 如何添加指向 django-autocomplete-light 所选项目的链接?

python - 如何在 XLWings 中引用 Excel 表格列名称?