【问题标题】:Have Excel open a URL using a browser -- not via Excel让 Excel 使用浏览器打开 URL,而不是通过 Excel
【发布时间】:2013-09-09 23:23:19
【问题描述】:

有没有办法告诉 Excel 只是将单元格中包含的 URL 直接传递给系统浏览器,而不是先尝试直接在 Excel 中打开?

这是问题的详细信息:

我有一个需要有效会话的网络应用程序(需要 cookie)。如果没有 cookie 的请求进入(针对受保护的页面),则会向登录页面发出重定向。

此网络应用程序可以生成一个 Excel 电子表格,其中包含指向网络应用程序中资源的 URL 的单元格。希望人们可以打开电子表格,然后单击单元格中的链接以在浏览器中打开页面(假设浏览器具有 cookie)。

如果我将这些 URL 之一粘贴到浏览器的地址栏中,它可以工作(因为浏览器将包含 cookie)。同样,如果其中一个 URL 包含在电子邮件中,我可以单击它,如果当前已登录,将访问该资源。

问题来了:

但是,如果我直接在 Excel 中单击链接,会发生 Excel 发送请求,而不是浏览器。由于 Excel 不知道浏览器持有的 cookie,因此不会发送任何 cookie。

发生的情况是 Excel 请求正确的 URL。 Web 应用看到请求没有 cookie,并将重定向发送回 Excel,其中 Location: 标头指向登录页面。

接下来,Excel 再次请求登录页面。

最后,浏览器打开(如果尚未打开),它会向登录 URL 发出另一个请求。

我假设发生的事情是 Excel 看到登录页面是 text/html 并决定移交给浏览器,但它向浏览器提供了 Location: 中提供的 URL,而不是电子表格中的 URL。

有没有办法将 Excel 配置为不尝试直接在单元格中打开 URL?

运行 Excel 14.3.5(Mac 2011)。

【问题讨论】:

标签: excel


【解决方案1】:

首先,这是我在 Office 2010 的 Windows 副本中使用的。我完全意识到您正在使用 Mac Office,所以这可能需要稍作改动...

Public Function OpenSite()

  Dim URL As String

  URL = Worksheets("Sheet1").Range("A1").Value
  Call Shell("C:\Program Files\Internet Explorer\Iexplore.exe " & URL, 1)

End Function

在 Windows 环境中,这将使用 Internet Explorer 打开其 URL 在 Sheet1!A1 中的站点

在 StackOverflow 上查看其他地方显示这是在 Mac 环境中使用 URL 调用浏览器的一种可能方法:

Shell("Macintosh HD:Users:brownj:Documents:" & _
                "rnaseq:IGV_2.0.14:igv.sh", vbNormalFocus)

(它似乎不需要先调用“呼叫”命令。)

也许尝试用 "{path to your browser}" & URL 替换第一个参数,看看是否可以解决问题。如果有效,只需将其放入 Private Sub Workbook_Open 下的 'ThisWorkbook' 对象中,以便在工作表打开时自动执行。

再次抱歉,我无法对此进行测试...但希望这至少能让您朝着正确的方向前进!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    相关资源
    最近更新 更多