............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Bucles de redireccionamiento y la función UrlDownloadToFile

Ver el tema anterior Ver el tema siguiente Ir abajo

Bucles de redireccionamiento y la función UrlDownloadToFile

Mensaje por jaimecruz el Mar Oct 29, 2013 2:31 pm

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 de forma temporal y luego lo borra.

En mi archivo original lo que hago es llamar con la macro1 a la función AbreUrlCopiaAFicheroSinReintentos y me descargo en mi hoja excel ciertos parámetros 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. Hay veces también que aunque la página no tenga un bucle de redireccionamiento también se queda bloqueada.

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 AbreUrlCopiaAFicheroSinReintentos, pero no tengo los conocimientos necesarios para hacerlo y por mucho que he leido en internet no consigo avanzar.

Si se ejecuta la macro1 se bloqueará excel ya que intentará abrir esa url que tiene el bucle (la que estaría en la celda A3). NO EJECUTARLA CON OTROS ARCHIVOS ABIERTOS puesto que abría que cerrar EXCEL al completo con CTRL+ALT+SUPR
Si se ejecuta la macro2 se hace sin problemas ya que el resto de url no presentan no presentan ningún tipo de problema.

Os agradecería vuestra ayuda. Gracias por adelantado.

Este es todo el código:
Código:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Function AbreUrlCopiaAFicheroSinReintentos(UrlBuscada As String, ArchivoCreado As String) As String

        '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
                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
                Exit Function
            End If

End Function

Sub Macro1()
On Error Resume Next
Dim CodigoIntegroHTML As String
Dim RutaArchivo As String

RutaArchivo = "C:\archivo_destino.html" 'ruta donde guarda provisionalmente el archivo. Luego lo borra

For i = 2 To 4
   CodigoIntegroHTML = AbreUrlCopiaAFicheroSinReintentos(Cells(i, 1), RutaArchivo)
   Application.StatusBar = "DESCARGANDO HTML FILA - " & i
Next i
    
''''''''''''''''''''''''''''''
Application.StatusBar = True
End Sub
Sub Macro2()
On Error Resume Next
Dim CodigoIntegroHTML As String
Dim RutaArchivo As String

RutaArchivo = "C:\archivo_destino.html" 'ruta donde guarda provisionalmente el archivo. Luego lo borra

For i = 2 To 2
    If i <> 3 Then
   CodigoIntegroHTML = AbreUrlCopiaAFicheroSinReintentos(Cells(i, 1), RutaArchivo)
   Application.StatusBar = "DESCARGANDO HTML FILA - " & i
   End If
Next i
MsgBox "MACRO EJECUTADA CON EXITO"
''''''''''''''''''''''''''''''
Application.StatusBar = True
End Sub

jaimecruz

Masculino Cantidad de envíos : 1
Edad : 43
Ciudad - Pais : sevillla - España
Version de Excel : 2007
Fecha de inscripción : 29/10/2013

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.