Comprobar hipervínculos

Tengo una Hoja Excel en la que una de sus columnas contiene enlaces o hipervínculos a contenidos de sitios Web.
Mi pregunta es: Como puedo comprobar que esos enlaces siguen activos sin tener que ir picando uno por uno. ¿Hay alguna función que pueda aplicar? Imagino que no, por lo que he podido ver, en cuyo caso sería necesario hacer una macro para comprobarlos, y no se como puedo hacerlo. ¿Alguien tiene una solución?

1 respuesta

Respuesta
1
Si eso es posible. Para ello debes servirte de un Control ActiveX el "Microsoft Internet Transfer Control, Version XXX". También conocido como Inet
Una vez que lo insertas en Excel, debes:
Establecer la Propiedad AccessType (Establece si el Inet se comunica directamente a Internet o a través de Proxy)
Tipo acepta los valores:
Constante Valor Descripción
IcUseDefault 0 Predeterminada. Asume lo que su PC tenga programado en el navegador de Internet que tenga por defecto.
IcDirect 1 Directo a Internet. Se usa este valor cuando el Inet se utiliza para comunicar con servidores http o ftp que están en la misma RAL. De esta forma no le afecta cómo tenga programado el acceso de su navegador.
IcNamedProxy 2 Le está indicando al Inet que la salida hacia Internet (O la red donde se encuentra el servidor http o ftp) debe hacerla a través del equipo indicado en la propiedad Proxy.
Una vez definidos los parámetros básicos del inet, le pasas el url al método Método OpenURL
ejemplo  Inet1.OpenURL (http://www.google.cl/)
Luego debes fijarte en el evento StateChanged del inet
Aquí te devolverá algunos valores como los sgtes:
0= No hay estado del que informar.
1=El control está buscando la dirección IP del host especificado.
2=El control encontró la dirección IP del host especificado.
3=El control está conectando con el equipo host.
4=El control conectó correctamente con el equipo host.
5=El control está enviando una solicitud al equipo host.
6=El control envió correctamente la solicitud.
7=El control está recibiendo una respuesta del equipo host.
8=El control recibió correctamente una respuesta del equipo host.
9=El control se está desconectando del equipo host.
10=El control se desconectó correctamente del equipo host.
11=Se produjo un error en la comunicación con el equipo host.
12=La solicitud se completó y se recibieron todos los datos.
Si te devuelve 3 o 4 estas conectado, así sabes si tus url están ok .
Bueno, esto debes implementarlo en un bucle para que pase por todos los links que tienes.
Bye
Bueno, bueno, bueno! Impresionante, pero son términos demasiado expertos para mi.
Te agradezco un montón la explicación, pero no se como puedo meter eso en Excel, con los conocimientos que tengo. Voy a intentar insertar el "inet" en Excel, pero te agradecería un ejemplo de como hacer el bucle, una vez que consiga tener inet en excel.
Gracias. Veo que realmente eres experto, nadie me ha conseguido dar si quiera una solución en multitud de foros. Ahora que tengo una, a ver como lo hago...
Un ejemplo para seria
Option Explicit
Dim l As Integer
Private Sub CommandButton1_Click()
Dim i As Integer
With Inet1
    .AccessType = icUseDefault
    .RequestTimeout = 60
End With
For i = 1 To 4
    Range("A" & i).Select
    l = i
    Inet1.OpenURL Range("A" & i).Text
    Inet1.Cancel
    DoEvents
Next
l = 0
MsgBox "ok"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Range("B" & l).Select
'Range("B" & l).Value = Inet1.ResponseCode
Range("B" & l).Value = Inet1.ResponseInfo
End Sub
Esto considerando que tu lista de URL parte desde A1 hacia abajo, el bucle contempla hasta 4 url, ( si tienes más modificas este valor).
Técnicamente es posible realizar lo que dices, pero si me lo permites, creo que es un poco engorroso en términos de tiempo, pues debes considerar el tiempo de respuesta (RequestTimeout) que debe no ser menos de 60 segundos tiempo de respuesta en que se determinara si fue o no posible tomar contacto con el host al que estas llamando. Pero bueno, eso lo determinas tu.
El sub "Inet1_StateChanged", es el que te dará la respuesta de si lograste o no comuncarte con el host, para ello ve la tabla que te mencione anteriormente, ( Inet1. ResponseCode, te da el código) y Inet1. ResponseInfo, te da un string con la info de respuesta
bye

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas