excel - 使用 VBA 在默认浏览器中打开 URL 并捕获现有 session

标签 excel vba web-scraping url-redirection

我尝试在默认浏览器 (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/

相关文章:

excel - Perl 使用 OLE 写入 Excel 工作表

ms-access - 似乎无法在 VBA 中使用具有属性的接口(interface),我无法弄清楚为什么

vba - 将变量值插入带有文本VBA的单元格

python - 搜索加载了 JS 的项目时,Scrapy 飞溅无法正常工作

python - 为什么我的 mysqldb 代码不工作?没有错误信息,没有数据

android - 将 jar 作为库添加到 Android Studio,错误 : More than one file was found with OS independent path 'META-INF/DEPENDENCIES'

excel - 如何每 14 天通过公式或 VBA 更改对其他单元格的单元格引用?

excel - 如何在 sub 内部使用 Count If 函数?

excel - 使用 Reporting Services 2008 R2 重命名 Excel 工作表

excel - 可变数量的嵌套循环