No me abre los hipervínculos correctamente

Tengo problemas con los hipervínculos: en el formulario, tengo activado la opción de si es hipervínculo, pero, al pinchar no funciona.
He copiado un código que he visto en Internet, pero en vez de llevarme a la página del producto, me lleva a la página de inicio de la intranet de la franquicia. Además, solo funciona con http; si pongo https, me salta un error. Es este:
Private Sub Intranet_Click()
If Not IsNull(Me.Intranet) Then
Application.FollowHyperlink Me.Intranet
End If
End Sub
Esto es un fallo de Office. Hay bastantes referencias en internet a este problema, pero sin soluciones concretas. Junto con mi hermano, hemos estado buscando soluciones de hacerlo con código de HTML o PHP en un archivo aparte (con lo intención de poner el enlace a este archivo en la base de datos), pero tampoco nos funciona.
Entonces, quería preguntar si alguien más ha tenido este problema, y cómo lo ha solucionado.

Respuesta
1

[Hola

¿Qué es el objeto "intranet" en tu "UserForm"?

Qué se supone que debe hacer, para ti, esta línea: If Not IsNull(Me. Intranet) Then

Comentas

Abraham Valencia

Hola, Abraham. Mira, ese campo es el enlace al producto en la intranet de la franquicia.

Sin ese código, no me funciona los enlaces. De hecho, mira la configuración, y lo que pasa:

Se señala todo el campo, y no abre el navegador.

Sin embargo, con el código que he puesto, sí que me abre el navegador, pero en vez de llevarme a esta página:

http://www.soluziondigital.com/Navegacion/DetallesProducto.aspx?IdProducto=B6BB885E6FC043A8A877977E0556A191 

Me lleva a esta otra:

http://www.soluziondigital.com/Noticias/Noticias.aspx 

No sé si así lo entenderás. Solo quiero que me lleve a la ficha de producto. Por lo visto, es un fallo de Microsoft Office, pero no sé si se podrá burlar con VBA.

Muchas gracias por contestar.

Un saludo.

Disculpa si no me he explicado con la suficiente claridad. A ver si esta segunda lo he conseguido. Gracias.

[Hola

¿Estás usando campos de tipo "Hipervínculo"? No tengo Access 2016, pero con la versión 2013 no hay problemas con ese tipo de campo al ver sus datos en un "Formulario" y además, tampoco hay problemas con colocar "https".

OJO con algo, si estás hablando de "intranet" (teóricamente un intranet exige que uno esté logueado) quizá por ahí está el dilema; prueba con otras web que NO sean de intranet y comentas.

Abraham Valencia

PD: A ver si alguien con Access 2016 e intranet puede también hacer pruebas

He probado con la url de esta pregunta, y lo hace bien. Yo creo que el problema viene por lo que comentas de tener que estar logueado. Pero es una jodienda, por eso estábamos buscando una solución. Si es un enlace, no sé porqué razón tiene que redirigir a ningún sitio. Muchas gracias.

En muchos dominios, cuando uno intenta entrar a las páginas de intranet y la página detecta que no estás logueado, automaticamente te redirige a una de las de internet (o sea de acceso público), por lo que no es raro lo que te sucede.

Para resolver tu caso yo solo veo un camino: Usar automatización con (el objeto) "Internet explorer", con lo que los hipervínculos, tal cual se espera de ellos, no te servirían sino que tendrías que programar que primero se loguee y después de eso recién entre/navegue en la página de intranet que necesitas (y cuya dirección sería sacada del campo en cuestión). Ah, por cierto, dependerá, también, de que conozcas/verifiques los objetos de la página de logueo correspondiente. No es cosa tan fácil si usa java por cierto, ya que obligaría a usar también "IHTMLElement"

Saludos]

Abraham Valencia

Hola, Abraham. Gracias por la solución. Ahora bien, ¿conoces algún ejemplo que pueda servirme de modelo, por si me da por hacerlo?

Una de ayer, ojo, es VBA de Excel pero es prácticamente lo mismo:

VBA para hacer login en página web

Abraham Valencia

A lo de prácticamente lo mismo, te refieres a que habría que adaptarlo a Access. ¿Sería muy complicado?

Sí, a eso, y de verdad mirando un ejemplo como eso, y sabiendo los nombres de los objetos y formularios de la web del logueo, no, no sería difícil.

Abraham Valencia

1 respuesta más de otro experto

Respuesta
1

¿Por qué usas hipervínculos? Es redundante. Si tengo un formulario

Y hago clic, como podría hace otra cosa, en el cuadro de texto Dir

Que es la página que se abre según la dirección que has puesto

En un principio, utilicé un campo texto en la tabla, y era en el formulario donde le decía que era hipervínculo. Pero tampoco me redirigía a la ficha de producto.

A sugerencia de Abraham, cambié a campo hipervínculo en la tabla, y ya no hacía falta en el formulario que le dijera que era hipervínculo. Aún con estas, me seguía mandando a la ficha de producto.

Por lo que respondo a tu pregunta. No sé por qué dices que es redundante. Uso hipervínculos ya que es lo que conozco. En tu ejemplo no sé si funcionará, pues aún falta logearse en la página.

¡Gracias, Icue!

A ti te sale bien el enlace porque no estás logueado. En cuanto lo hagas, te redigire a la página de noticias.

He estado buscando soluciones, y tengo una. He desarrollado este código,:

Private Sub Intranet_Click()
Dim Corte As Integer
Dim Producto As String
Dim chromePath As String
chromePath = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
Corte = InStrRev([Intranet], "=")
Producto = Right(Intranet, Len([Intranet]) - Corte)
myURL = fncRutaIntranet() & Producto
If Not IsNull(Me.Intranet) Then
Shell (chromePath & " -url " & myURL)
End If
End Sub

Y el módulo al que hace referencia es este:

Public Function fncRutaIntranet() As String
Const nombreCarpetaImagenes As String = "Imagenes"
'Simplemente creamos la ruta relativa a la carpeta de imágenes, que será
'el valor que nos devolverá la función
fncRutaIntranet = "http://www.soluziondigital.com/Navegacion/DetallesProducto.aspx?IdProducto=" & "" & ""
End Function

Me abre la ficha de producto y la página de novedades (dos pestañas). Entonces, no sé si se podrá conseguir que solo abra la página de producto, y que abra el navegador predeterminado, sin tener que ponerle la ruta del navegador.

Gracias, y un saludo.

A ver, he mejorado el código anterior:

Private Sub Intranet_Click()
Dim Corte As Integer
Dim Producto As String
Dim chromePath As String
chromePath = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
If InStrRev([Intranet], "Soluzion") <> 0 Then
Corte = InStrRev([Intranet], "=")
Producto = Right(Intranet, Len([Intranet]) - Corte)
myURL = fncRutaIntranet() & Producto
If Not IsNull(Me.Intranet) Then
Shell (chromePath & " -url " & myURL)
End If
Else
myURL = [Intranet]
Shell (chromePath & " -url " & myURL)
End If
End Sub

He añadido un if para separar los enlaces de soluzion digital (la intranet), del resto. Lo que pasa es que me cualquier otro enlace me dice que no se puede descargar la información.

Por otra parte, sigo teniendo los dos problemas que decía antes. Que me gustaría que los enlaces de Soluzion Digital me los abriera en el navegador predeterminado, sin tener que decírselo yo; y que no me abra dos ventanas.

Sigo mejorando el código. De momento va así:

Private Sub Intranet_Click()
Dim Corte As Integer
Dim Producto As String
Dim path As String
'chromePath = "C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe"
'firefoxPath = "C:\Program Files\Mozilla Firefox\Firefox.exe"
path = "C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe"
    If InStrRev([Intranet], "Soluzion") <> 0 Then
        Corte = InStrRev([Intranet], "=")
        Producto = Right(Intranet, Len([Intranet]) - Corte)
        myURL = fncRutaIntranet() & Producto
            If Not IsNull(Me.Intranet) Then
                Shell (path & " -url " & myURL)
            End If
    Else
        myURL = [Intranet]
        Shell (path & " -url " & myURL)
    End If
End Sub

Como no doy con una manera de que me elija el navegador predeterminado, guardo ahí las dos rutas y las cambio manualmente según me haga falta.

Luego, sigo teniendo el problema de que se me abre las dos pestañas en el navegador.

Si alguien tiene alguna sugerencia, se lo agradecería.

Voy a dejar por aquí la base de datos. Tengo problemas con el enlace de un proveedor de infortisa, que me da error cuando abre el enlace. Creo que el problema está en el https, pero no sé solucionarlo. En cuanto al otro proveedor, solo dos problemas que mencioné antes: que se abre en la misma ventana del navegador dos pestañas; y que abra con el navegador predeterminado, en vez de como está ahora.

https://www.dropbox.com/s/m5isxh74nott86k/Base%20de%20datos.accdb?dl=0 

Es el formulario 03-TPV Artículos

Si a ti te funciona, ni mil palabras.

Sí me funciona, pero a ver si me puedes echar un cable con esta parte:

    Else
        Corte = InStrRev([Intranet], "#")
        Producto = Right(Intranet, Len([Intranet]) - Corte)
        myURL = Producto
        Shell (path & " -url " & myURL)
    End If

Que en la base de datos que he subido a dropbox sería el enlace de infortisa, que me da error, y no soy capaz de arreglarlo.

¡Mil gracias!

De verdad, lo siento, no lo sé.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas