Jump to content

No se puede descargar la información Solicitada


Recommended Posts

Hola!!!

A ver si me podeis ayudar con un problemilla que tengo con el excel. Os cuento:

Con la opción "Nueva Consulta Web", y con un programilla que he echo con Visual Basic, voy recopilando datos en una hoja excel. Cada 60 segundos excel me transporta unos datos de una pagina web, y yo los voy recopilando en unas listas. En definitiva, estoy haciendo un histórico de unos datos que me tinteresan de una web. Quiero guardar los datos las 24h del dia durante un mes entero. Pues tengo el programa en un servidor para que este todo el dia encendido. De momento hasta aqui todo bien.

El problema en que me encuentro es:

Hay veces, que en el momento que el excel hace la lectura de la web para transportar los datos, no lee bien la pagina (por algun motivo, por la connexion, pq la pagina se esta cargando....no se...). Y me sale el mensaje de aviso "No se puede abrir Http://... No se puede descargar la información solicitada". Al salir este mensaje se me queda todo el programa parado, hasta que no le doy aceptar. Con lo cual, que si estoy 2 dias sin mirar el programa y me sale esta mensaje, son dos dias que pierdo de recopilar información.

Sabeis si hay manera de evitar este mensaje, o de que se acepte solo??

Espero haber sido claro con la explicación de mi problema.

Muchas gracias de antemano!!!

Link to post
Share on other sites

Hola MIARROW

Bienvenido al foro

Usa la sentencia

On Error Resume Next

Si se encuentra un error en la ejecución del código saltará a la siguiente línea de código

O bien

On Error Resume GoTo Salto

donde Salto es una etiqueta que tendrás que poner justo antes de la línea de código que quieres que se ejecute tras el error, por ejemplo

On Error GoTo Salto

For i=1 to 100

If Range("A" & i)= "Hola" then

....

....

End If

Salto:

For ...

Un saludo desde Vitoria

Link to post
Share on other sites

Hola IoYama!!!!

Muchas gracias por ser tan rapido con la respuesta!!!!

No se utilizar bien la funcion que me dices. O es que no funciona en mi aplicación. Mira te paso mi algoritmo, a ver si puedes echarle un ojo:

Sub Reloj()

If Hoja1.Range("B12").Value = 1 Then

Hoja1.Range("A1").Value = Time

Application.OnTime Now + TimeValue("00:00:01"), "Reloj"

i = Hoja1.Range("B4").Value + 4

If Hoja1.Range("B9").Value = 1 Then

Hoja1.Cells(i, 11).Value = (Hoja1.Range("F5").Value / 10)

Hoja1.Cells(i, 12).Value = Hoja1.Range("F18").Value

Hoja1.Cells(i, 13).Value = (Hoja1.Range("F8").Value * (-1))

Hoja1.Cells(i, 14).Value = Hoja1.Range("F6").Value

End If

.

.

.

.

.

.

End If

End Sub

DONDE:

B12 = El mes en que nos encontramos

A1 = Reloj

B4 = Minuto en que nos encontramos. (de los 1439 minutos que tiene un dia)

B9 = Dia en que nos encontramos.

F5, F6, F8, F18 = Valores que quiero leer para ir guardando. Estos valores son los que cada 60 segundos se me van refrescando de la pagina web.

Gracias de nuevo!!!

Saludos!

Link to post
Share on other sites

Hola MIARROW

Me temo que he errado en mi apreciación del problema. Tras releer tu primera intervención me da la sensación de que lo que tienes es una consulta (o así) a la página web (yo pensaba que lo hacías desde código).

Si das botón derecho sobre la consulta tienes algunas opciones a investigar (aunque me imagino que ya lo habrás hecho).

Lamentándolo mucho no puedo proporcionarte más ayuda, esperemos que algún compañero... (quizás pegones1 autor de https://www.ayudaexcel.com/foro/showthread.php?t=16020).

Un saludo desde Vitoria

Link to post
Share on other sites
Mucas gracia por tu interes Ioyama!!

Preguntare a pegones1 a ver si tenemos suerte!

Saludos

Hola MIARROW, como te ha dicho ioyama para que no salga el mensaje de error se debe hacer la llamada con macros, valiéndose de On Error Resume Next. Prueba ésto:

Option Explicit

Public ArrancaPara As Boolean
Private datHora As Date

Sub ArrancaParaReloj()
ArrancaPara = Not ArrancaPara
If ArrancaPara Then
RefrescaConsultaWeb
Else
StopTemporizador
End If
End Sub

Sub StartTemporizador() 'arranca el temporizador
datHora = Now + TimeSerial(0, 1, 0)
Application.OnTime Earliesttime:=datHora, Procedure:="RefrescaConsultaWeb", Schedule:=True
End Sub

Sub StopTemporizador() 'para el temporizador
Application.OnTime Earliesttime:=datHora, Procedure:="RefrescaConsultaWeb", Schedule:=False
End Sub

Sub RefrescaConsultaWeb()
On Error Resume Next
Err.Clear

[COLOR="blue"]Sheets(1).QueryTables(1).Refresh BackgroundQuery:=False[/COLOR]

If Err.Number <> 0 Then
Debug.Print Now & " Error: " & Err.Number & " " & Err.Description
End If

StartTemporizador
End Sub[/CODE]

Cambia el número de la hoja 1 por el que uses y el número de consulta en la llamada a [color=blue]Refresh (en azul)[/color].

Al ejecutar ArrancaParaReloj() se ejecuta cada minuto RefrescaConsultaWeb() y cuando falla no sale la ventana del mensaje de error pero se escribe en la ventana de Inmediato la fecha y hora, el error y su descripción con Debug.Print para saber cuándo y cuántas veces ha pasado.

[b]IMPORTANTE:[/b] En la ventana de propiedades de la conexión [b]NO MARQUES Actualizar cada 1 minutos[/b]. Esto ya lo hace el temporizador en código con: TimeSerial(0, 1, 0)

Para dar las gracias, click en la mano abajo a la izquierda de este mensaje con la palabra [b]Gracias[/b].

Link to post
Share on other sites
Guest
This topic is now closed to further replies.


  • Posts

    • Nunca debes utilizar los textbox, la función Val(), ni la función Format() en los cálculos, utiliza las variables y las funciones de conversión del tipo adecuado. He añadido un pequeño calendario.   PRUEBA1.xlsm
    • Hola @Greysi! Pude armar este listado en base a la información contenida en esta página. El Listado parece bastante completo (47.940 ciudades), al margen de ciertas excepciones (como Argentina que solo tiene 38 ciudades jajajaja) y contiene muchos nombres en inglés. Espero te sirva! Abrazo! Paises-Estados-Ciudades.xlsx
    • el inconveniente es , que deseo ingresar los datos en los textbox con separador de miles y que me ejecute los cálculos correspondientes 
    • gracias por la atención prestada. ingreso un valor en un textboxt (credito), y en otro le coloco los dias en que se va a demorar en devolverlo calculando asi +PRUEBA1.xlsm un interes de el 10% 
    • Saludos BigPetroman, te comento, el archivo que bajaste no tiene la modificacion, ya que cuando lo subi no tenia idea de como hacerlo. Despues de subir el archivo, busque informacion sobre el siguiente comentario que realizaste. Y logre hacer que funcionara, asi que puse el codigo de lo que habia hecho para que me dieran su opinion. Aunque el codigo realiza la validacion, no funciona del todo como yo queria. Ya que lo logico seria que al capturar el serial, haga la validacion y muestre un mensaje indicando que el serial ya esta auditado. Pero, la validacion, o aviso de serial ya auditado, lo muestra despues de apretar el boton "Anotar Entrada" De todos modos, anexo el archivo para que veas lo que logre. Los seriales los tomo de la Hoja "Laptop", asi que si el serial esta en esa hoja, no deja ingresar el valor en la Hoja "Reg. N_Auditados". Es decir, hace bien el trabajo... Agradecido de antemano, y pido disculpas si mi comentario genero confusion. Equipos No Auditados.xlsm
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy