Excel链接不会加载页面,但是当链接被粘贴在浏览器中时,它就可以工作。

我已经通过我的ruby-on-rails应用程序在Excel电子表格中放置了超链接。 链接是一些特权的网页,需要login后,我应该采取的请求页面。 但是,发生的事情是,在网站的主页上loginI lang后。 有趣的是,当我右键单击Excel中的链接并将链接粘贴到网页浏览器url中时,它按预期工作。 所以我不认为这是我的应用程序的错误,而是我失踪的Excel中的东西?

我的scheme几乎与此scheme相同: http : //www.geekstogo.com/forum/topic/289186-excel-2007-hyperlink-loads-web-login-screen-not-linked-urlplease-help-me /

这个问题通常发生在IE和我也面临同样的问题。

解决这个问题非常简单

  1. 在公用文件夹中创build一个redirect.html页面(公用文件夹,因为您使用的是ROR)
  2. 将此复制到您的redirect.html

<html> <body> Please wait, loading your page... <script type="text/javascript"> function getQuerystring(key) { key = key.replace(/[\[]/,"\\\[").replace(/ [\]]/,"\\\]"); var regex = new RegExp("[\\?&]"+key+"=([^&#]*)"); var query = regex.exec(window.location.href); return query[1]; } window.location = window.location.protocol + "//" + window.location.host + "/" + getQuerystring('page'); </script> </body> </html> 

  1. 你在Excel中build立的链接应该被修改

    对于例如旧链接 – http://test.com/post/comments/1新的链接应该&#x662F; – http://test.com/redirect.html?page=post/comments/1

  2. 您需要将URL的部分(在基本URL之后)作为parameter passing

这是如何工作的。

当用户在excel中点击一个链接时,它指向redirect.html并且javascript构造实际的URL并且再次redirect到适当的页面,如果已经login,用户将被导航到实际页面,否则被redirect到login/主页面。

不知道这真的是一个答案,但我有我的应用程序相同的问题。

整个应用程序,包括主页,都受到保护(我正在使用Devise)。 所以无论何时用户想要访问http:// myapp ,都会将其redirect到http:// myapp / users / sign_in 。

我认为devise使用301或302redirect到login屏幕。

我的发现是,在Office中点击链接并在IE中打开不能适应这种redirect(Chrome是默认浏览器时没有问题)。 它与您的设置相匹配吗?

最终,我没有发现其他的解决scheme,但直接链接到login页面…也许还有其他的select,但我仍然在寻找他们。

编辑:发现这篇文章(从2006年) 有关Outlook中的一个错误 ,完全符合我们的情况。 再次,不是一个解决scheme,但至less是一个解释。

这是Excel的内部URL处理问题,它具有现代网页devise模式(例如会话+redirect)的问题。

这是一个绕过Excel内部机制的客户端解决scheme,而是使用操作系统默认的URL处理程序。 请注意,由于它使用macros,因此此方法需要适当的安全设置。

在工作表的VBA模块中,添加以下代码:

 Option Explicit Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As Long, _ ByVal Operation As String, _ ByVal Filename As String, _ Optional ByVal Parameters As String, _ Optional ByVal Directory As String, _ Optional ByVal WindowStyle As Long = vbMinimizedFocus _ ) As Long Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ShellExecute 0, "Open", Target.Address End Sub 

这是基于另外两个答案的答案。

为了使这个工作简单地用这样的引号replace文本Target.Address与您的网站URL

 ShellExecute 0, "Open","http://www.stackoverflow.com"