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

时间:2017-07-21 14:13:51

标签: excel-vba sharepoint hyperlink vba excel

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

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&#39;并将细胞标记为粉红色,即使链接有效。调试显示HL.address的值是&#34;文件夹/ Document.pdf&#34;而不是&#34; https://website/folder/Document.pdf&#34;。这个excel文档托管在&#34; https://website&#34;通过sharepoint。

由于截断,代码无效。

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

2 个答案:

答案 0 :(得分:2)

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

您可以尝试通过更改所谓的&#34;超链接基础&#34;来强制绝对地址。为了做到这一点,请访问:文件&gt;信息&gt;显示所有属性&gt;超链接基础(在屏幕右侧)并将其更改为&#34; x&#34;。

Microsoft支持网站的参考:

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

(文章介绍MS Word的解决方案,但它也应该在MS Excel中工作)

希望有所帮助。

答案 1 :(得分:0)

excel中的range对象具有第二个属性“ Subaddress”。 使用子地址功能获取其余的地址,如下所示:

range.Hyperlinks(1).Address + range.Hyperlinks(1).SubAddress

就我而言,我必须在“地址”和“子地址”之间添加其他字符。请确保检查使用地址和子地址如何构成完整的URL