And*_*ndy 3 excel redirect vba web-scraping
我尝试在默认浏览器 (Chrome) 中打开我已经登录的网络应用程序的特定 URL(如果没有登录,则告诉我登录)。当我将此 URL 复制/粘贴到浏览器地址栏中时,它完美运行。当我通过 VBA 打开此 URL 时,它不会ThisWorkbook.FollowHyperlink- 然后它会重定向 - 作为一种后备 - 到主页而不是特定的 URL。
我发现这是一个会话问题,VBA 不知何故无法识别/捕获现有会话。
作为“丑陋的解决方法”,我目前正在通过http://www.dereferer.org/重定向到特定的 URL,这完全有效,但需要额外的时间。
这不起作用:
ThisWorkbook.FollowHyperlink ("https://www.example.com/function/edit/2019-04-09)
Run Code Online (Sandbox Code Playgroud)
这有效:
ThisWorkbook.FollowHyperlink ("http://www.dereferer.org/?https://www.example.com/function/edit/2019-04-09)
Run Code Online (Sandbox Code Playgroud)
(根据我的需要,不需要对目标 URL 进行编码)
由于此重定向缓慢且间接,因此我正在寻找一种在使用现有会话(如果可能)的同时直接打开目标 URL 的方法。如果这是不可能的(例如由于安全原因),那么在不设置自己的重定向器(通过 GET 参数进行像 dereferer.org 一样的重定向)的情况下最好/最快的重定向方法是什么?
这是一个笨拙且不明智的解决方法,但您可以绕过FollowHyperlink,而是使用Shell在默认网络浏览器的新选项卡/窗口中打开网站:
Shell "explorer ""https://www.example.com/function/edit/2019-04-09"""
Run Code Online (Sandbox Code Playgroud)
(请注意,如果您在单元格中键入超链接并手动单击它,而不是使用 VBA FollowHyperlink,那么仍然会出现相同的问题。在 Word 和 PowerPoint 中也会发生这种情况。请庆幸您没有尝试捕获FollowHyperlink 事件并在窗口中“更正”该事件)
回应评论 - 对于 Mac,您将需要使用"open"而不是"explorer". 此代码应在 Mac 或 PC 上运行:
Shell IIf(Left(Application.Operatingsystem, 3)="Win","explorer ","open ") & _
"""https://www.example.com/function/edit/2019-04-09"""
Run Code Online (Sandbox Code Playgroud)