我尝试在默认浏览器 (Chrome) 中打开我已经登录的 Web 应用程序的特定 URL(或者如果我没有登录,则告诉我登录)。当我将此 URL 复制/粘贴到浏览器地址栏中时,它可以完美运行。当我通过 VBA 使用 ThisWorkbook.FollowHyperlink
打开此 URL 时,它不会 - 然后它重定向 - 作为一种后备 - 到主页而不是特定的 URL。
我发现这是一个 session 问题,而 VBA 不知何故无法识别/捕获现有 session 。
作为“丑陋的解决方法”,我目前正在重定向 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同时使用现有 session (如果可能)。如果这是不可能的(例如因为安全性),那么在不设置自己的重定向器(通过 GET 参数像 dereferer.org 一样重定向)的情况下,最好/最快的重定向方式是什么?
最佳答案
一种笨拙且不明智的解决方法,但您可以绕过 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"""
关于excel - 使用 VBA 在默认浏览器中打开 URL 并捕获现有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583109/