让Excel使用浏览器打开URL - 而不是通过Excel

时间:2013-09-06 00:20:01

标签: excel

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

以下是问题的详细信息:

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

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

如果我将其中一个网址粘贴到浏览器的位置栏中,则可以正常工作(因为浏览器会包含Cookie)。同样,如果其中一个URL包含在电子邮件中,我可以点击它,如果当前登录,将访问该资源。

问题在于:

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

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

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

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

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

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

运行Excel 14.3.5(Mac 2011)。

1 个答案:

答案 0 :(得分:0)

首先,这是我在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打开网址为 Sheet1!A1 的网站

在StackOverflow上查看其他地方会将此显示为在Mac环境中使用URL调用浏览器的可能方法:

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

(它似乎不需要首先使用'Call'命令。)

也许尝试用“{浏览器的路径}”替换第一个参数&网址,看看是否可以解决问题。如果它有效,只需将其放在 Private Sub Workbook_Open 下的“ThisWorkbook”对象中,即可在工作表打开时自动执行它。

再一次,我很抱歉我无法测试这个...但希望这至少会让你朝着正确的方向前进!