我尝试在默认的浏览器(Chrome)中打开我已经登录(或告诉我是否登录)的Web应用程序的特定URL。当我将此URL复制/粘贴到浏览器地址栏中时,它可以正常工作。当我使用ThisWorkbook.FollowHyperlink
通过VBA打开此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的重定向)?
答案 0 :(得分: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
答案 1 :(得分:1)
一个笨拙且不明智的解决方法,但是您可以绕过FollowHyperlink
,而是使用Shell
在默认网站的新标签页/窗口中打开网站浏览器:
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"""