2012-02-21 32 views
5

He colocado hipervínculos en una hoja de cálculo de Excel a través de mi aplicación ruby-on-rails. Los enlaces son a algunas páginas privilegiadas que requieren, Después del inicio de sesión se supone que debo llevarlo a la página solicitada. Sin embargo, lo que sucede es que después de iniciar sesión, me encuentro en la página de inicio del sitio web. Curiosamente, cuando hago clic derecho en el enlace en Excel y pego el enlace en la URL del navegador web, funciona como se esperaba. ¿Entonces no creo que sea culpa de mi aplicación, sino algo en Excel que me falta?Los enlaces de Excel no cargan páginas, pero cuando el enlace se pega en el navegador funciona.

Mi escenario es más o menos lo mismo que este escenario: http://www.geekstogo.com/forum/topic/289186-excel-2007-hyperlink-loads-web-login-screen-not-linked-urlplease-help-me/

+0

¿Estas seguro que el texto del hipervínculo y AE URL idénticas? Es posible que el texto muestre la dirección completa (para que funcione al copiar y pegar) pero la URL subyacente está mal formada. – Widor

+0

La forma en que estoy copiando es haciendo clic derecho en Excel-sheet y copiando y pegando Todo en el campo de dirección del navegador, que funciona. Si ya ha iniciado sesión, copiar pegando el enlace me lleva a la página, pero al hacer clic en Excel me lleva una vez a una página de inicio de sesión (y luego a la página de inicio) –

Respuesta

11

Este problema normalmente ocurre en IE y también enfrenté el mismo problema.

solución a esto es muy simple

  1. crear una página redirect.html en la carpeta pública (carpeta pública porque está utilizando ROR)
  2. Copiar este a su 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. Los enlaces que están construyendo en Excel deben ser modificados

    Por ejemplo antiguo enlace - http://test.com/post/comments/1 Nuevo enlace debería ser - http://test.com/redirect.html?page=post/comments/1

  2. que necesita para aprobar la parte del URL (después URL base) como un parámetro

Cómo funciona esto.

Cuando el usuario hace clic en un enlace en excel apunta a redirect.html y el javascript construye la URL real y redirige nuevamente a la página correcta, el usuario será redirigido a Inicio de sesión/Página de inicio si ya ha iniciado sesión.

1

No estoy seguro de que es realmente una respuesta, pero tuve el mismo problema con mi solicitud.

Toda la aplicación, incluida la página de inicio, está protegida (estoy usando Devise). Entonces, cuando un usuario quiere acceder http://myapp, lo redirige a http://myapp/users/sign_in.

Creo que Devise usa un 301 o un 302 para redirigir a las pantallas de inicio de sesión.

Mi descubrimiento es que los enlaces hicieron clic en Office y al abrir en IE no pueden acomodar esta redirección (no hay problema cuando Chrome es el navegador predeterminado). ¿Coincide con tu configuración?

En última instancia, no he encontrado otra solución que la de vincular directamente a la página de inicio de sesión ... Tal vez haya otras opciones pero todavía estoy buscándolas.

EDIT: encontrado este artículo (desde 2006) about a bug in Outlook que totalmente coincide con nuestra situación. Una vez más, no es una solución, pero al menos una explicación.

+1

Ciertamente, Chrome es mi navegador predeterminado. Este error es reproducible tanto en Firefox como en Chrome. No lo he comprobado en IE sin embargo. ¡Gracias por tu ayuda! Publique cualquier solución que se le ocurra. –

+0

El error mencionado coincide exactamente con nuestra situación. No tengo acceso al servidor y la otra solución propuesta por @Bharath no funciona para mí. Entonces esta respuesta no es una respuesta, pero al menos es una explicación, debe marcarse como válida. Gracias Pierre por la investigación. –

+0

MS QA no es exactamente fácil de alcanzar. Hice lo mejor que pude y publiqué el problema en [una publicación del foro relacionada] (http://forums.asp.net/t/1587925.aspx/2/10?Excel+Hyperlink+Session+Problem). Espero que el error avance desde el foro de ASP.NET a la ingeniería de Excel. Si conoce una mejor manera de contactarlos, ¡siéntase libre de hacerlo! –

0

Esto es un problema con Excel internal URL handling, que tiene problemas con los patrones de diseño web modernos (por ejemplo, sesiones + redirecciones).

Aquí hay una solución del lado del cliente que evita los mecanismos internos de Excel y utiliza el controlador de URL predeterminado del sistema operativo en su lugar. Tenga en cuenta que, dado que utiliza macros, este enfoque requiere una configuración de seguridad adecuada.

En el módulo de VBA de la hoja de cálculo, agregue el siguiente código:

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 

Esto se basa en las respuestas de twoother SO respuestas.

-1

Para que esto funcione, simplemente sustituir el Target.Address texto con su URL del sitio web entre comillas como esto

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