提问人:Hashah 提问时间:11/9/2023 最后编辑:Hashah 更新时间:11/9/2023 访问量:105
打开时超链接会更改地址
Hyperlink changes address when opening
问:
超链接 im Excel 数据: HTTPS://apply.d.co.uk/JobDetail/9467 但是当我点击它时,地址是: HTTPS://apply.d.co.uk/Error
我尝试检查 URL 是否正确,它总是说是,但是当我打开它时,它会发生变化并在地址中显示错误。
我使用了这个功能:
Function URLExists(url As String) As Boolean
Dim Request As Object
Dim ff As Integer
Dim rc As Variant
On Error GoTo EndNow
Set Request = CreateObject("WinHttp.WinHttpRequest.5.1")
With Request
.Open "GET", url, False
.Send
rc = .StatusText
End With
Set Request = Nothing
If rc = "OK" Then URLExists = True
Exit Function
EndNow:
End Function
我只需要一个解决方案,这样我就不需要打开每个超链接来检查它是否显示错误。
答:
1赞
taller
11/9/2023
#1
CheckConn
返回 HTTP 状态代码和重定向的 URL。如果 URL 不可访问,则 HTTP 状态代码将为 0。
Public Function CheckConn(sURL) As String
Const WHR_EnableRedirects = 6
Const WHR_URL = 1
Dim oXmlHttp As Object, nRetVal As Integer
On Error Resume Next
Set oXmlHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oXmlHttp.Option(WHR_EnableRedirects) = True
oXmlHttp.Open "HEAD", sURL, False
oXmlHttp.setRequestHeader "Content-Type", "text/xml"
oXmlHttp.send ""
nRetVal = oXmlHttp.Status
CheckConn = "Status: " & nRetVal & ", Redirect URL:" & oXmlHttp.Option(WHR_URL)
Set oXmlHttp = Nothing
On Error GoTo 0
End Function
Sub demo()
Dim sU As String
sU = "HTTPS://apply.d.co.uk/JobDetail/9467"
Debug.Print (CheckConn(sU))
sU = "https://www.youtube.com/shorts/w3-yM1IjuB0"
Debug.Print (CheckConn(sU))
End Sub
评论
0赞
Hashah
11/9/2023
谢谢,它显示两个站点的“200”。问题是超链接打开,但地址从“JobDetail/9467”更改为“Error”
0赞
taller
11/9/2023
我无法访问您的网址。它在我的电脑上返回 0。所以我无法追踪它是如何变成错误的。
0赞
Hashah
11/9/2023
是否有可能在代码中添加一行以返回其地址?例如。您检查 URL 是否有效:google.com 然后返回“200”和地址?(在这种情况下,这应该是相同的,但在我的情况下,它将显示带有错误 Word 的那个)
0赞
taller
11/9/2023
是的。我已经更新了代码。
0赞
Hashah
11/9/2023
有没有办法得到最终地址?打开一些内部站点时,首先链接以“/Login”结尾,但随后它会自动登录并显示“JobDetail/1946”(这是正确的)或再次显示“/Error”,我需要该最终地址。但该函数仅返回“/Login”部分,即初始地址。
评论