使用VBA在Default-Browser中打开URL捕获现有会话

问题描述 投票:0回答:2

我尝试在默认浏览器(Chrome)中打开我已经登录的Web应用程序的特定URL(或者告诉我如果不登录)。当我将此URL复制/粘贴到浏览器地址栏中时,它完全有效。当我通过VBA用ThisWorkbook.FollowHyperlink打开这个URL时,它不会 - 然后它将 - 作为一种回退 - 重定向到主页而不是特定的URL。

我发现这是一个会话问题,VBA不知何故无法识别/捕获现有会话。

作为“丑陋的解决方法”,我目前正在将http://www.dereferer.org/重定向到特定的URL,这完全有效,但需要额外的时间。

这不起作用:

ThisWorkbook.FollowHyperlink ("https://www.example.com/function/edit/2019-04-09)

这有效:

ThisWorkbook.FollowHyperlink ("http://www.dereferer.org/?https://www.example.com/function/edit/2019-04-09)

(根据我的需要,不需要对目标URL进行编码)

由于此重定向缓慢且间接,我正在寻找一种在使用现有会话时直接打开目标URL的方法(如果可能)。如果这是不可能的(例如由于安全性),在没有设置自己的重定向器(通过GET参数重定向像dereferer.org)的情况下,重定向的最佳/最快方法是什么?

excel vba web-scraping url-redirection
2个回答
1
投票

一个笨重且不明智的解决方法,但您可以绕过FollowHyperlink,而是使用Shell在默认Web浏览器的新选项卡/窗口中打开网站:

Shell "explorer ""https://www.example.com/function/edit/2019-04-09"""

(作为一个注释,如果你在单元格中输入超链接并手动点击它,而不是使用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"""

1
投票

如果你被允许安装selenium basic我会使用它

Option Explicit

'download selenium https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
'Ensure latest applicable driver e.g. ChromeDriver.exe in Selenium folder
'VBE > Tools > References > Add reference to selenium type library
Public Sub DownloadFile()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const URL = "url"

    With d
        .Start "Chrome"
        .get URL
        'login steps
        .get 'otherUrl'
        Stop '<delete me later
        .Quit
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.