Saltar al contenido

Bucles de redireccionamiento y la función UrlDownloadToFile


jaimecruz

Recommended Posts

publicado

Buenas noches!!!

He creado una función, llamada AbreUrlCopiaAFicheroSinReintentos, que se conecta a internet mediante la función URLDOWNLOADTOFILE y descarga el codigo html a un archivo en mi ordenador y luego lo borra.

En mi archivo original por ejemplo puedo tener 2000 direcciones web. Lo que hago es llamar con la macro1 a la función AbreUrlCopiaAFicheroSinReintentos y me descargo en mi hoja excel ciertos parametros del código html.

El problema lo estoy teniendo cuando me encuentro con direcciones que tienen un bucle de redireccionamiento. En ese momento la hoja Excel se me queda permanentemente bloqueada y solo la puedo cerrar a lo bestia con Ctrl+alt+supr.

Un ejemplo de url que me está dando este tipo de problemas es este: http://www.cycingenieria.com

He intentado solucionarlo de alguna forma creando un temporizador de forma que si transcurren 10 segundos sin recibir respuesta de esa página se salga de la función, pero sin resultado.

Os agradecería vuestra ayuda. Gracias por adelantado. Este es el código fallido de mi función:


Public Function AbreUrlCopiaAFicheroSinReintentos(UrlBuscada As String, ArchivoCreado As String) As String

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim TiempoPausa, Inicio
Dim LlavePaso As Boolean

LlavePaso = True
TiempoPausa = 10 ' Asigna hora de inicio.
Inicio = Timer ' Establece la hora de inicio.
Do While Timer < Inicio + TiempoPausa
If LlavePaso = True Then
LlavePaso = False
'Abro la página web y guardo el archivo con el codigo fuente
Dim Reply As Long
Reply = URLDownloadToFile(0, UrlBuscada, ArchivoCreado, 0, 0)
If Reply <> 0 Then
'hago esto para evitar bucles de redireccionamiento, pero este mensaje no se muestra nunca
MsgBox "No se ha podido descargar el archivo. Compruebe la dirección Url y la conexión a internet", vbCritical
Exit Function
Else

'Abro el archivo html y meto todo el codigo fuente en la variable TOTAL
Dim NumeroArchivo As Integer
Dim Linea As String, Total As String
NumeroArchivo = FreeFile
Open ArchivoCreado For Input As #NumeroArchivo
Do Until EOF(1)
Line Input #1, Linea
Total = Total + Linea + vbCrLf
Loop
Close #1

Kill ArchivoCreado
AbreUrlCopiaAFicheroSinReintentos = Total
MsgBox "Bien hecho"
Exit Function
End If

End If
Loop


End Function
[/CODE]

En la Macro 1 si cambiais borrais la linea anterior y activais esto: For i = 1 To 2

Vereis como cuando i llega a 2 la hoja Excel se bloquea y ya no hay nada que hacer.

Bucles redirecionamiento.zip

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.