Guardar archivo que se descarga de una página web

Tengo un código que entra a una página web, escribe mi clave y luego navega para descargar información.

Hasta ahí cero problemas, lo que me falta es que al momento de descargar me aparece el cuadro de dialogo y no logro descargar en una dirección especifica y con un nombre diferente al del que me propone la página.

Adjunto la imagen para que tengan claro el cuadro de dialogo que quiero automatizar, pues claro a mano si puedo definir la dirección y el nombre, pero la idea es que sea en automático ya que tiene bastantes archivos que bajar

1
Respuesta
1

H. Ola estimado

¿Qué instrucciones/código usas para descargar el archivo?

Salu2

Abraham Valencia

Sub facelec()
Dim ie As Object
Dim doc As HTMLDocument
Set ie = CreateObject("InternetExplorer.application")
ie.Navigate "https://declaraciones.sri.gob.ec/comprobantes-electronicos-internet/pages/consultas/recibidos/comprobantesRecibidos.jsf?&contextoMPT=https://declaraciones.sri.gob.ec/tuportal-internet&pathMPT=Facturaci%F3n%20Electr%F3nica&actualMPT=Comprobantes%20electr%F3nicos%20recibidos%20&linkMPT=%2Fcomprobantes-electronicos-internet%2Fpages%2Fconsultas%2Frecibidos%2FcomprobantesRecibidos.jsf%3F&esFavorito=S"
ie.Visible = True
Do
DoEvents
Loop Until ie.ReadyState = 4 'verifico si cargo correctamente la página
ie.Document.getElementById("frmPrincipal:opciones:1").Click
Application.Wait (Now + TimeValue("0:00:03"))
ie.Document.getElementById("frmPrincipal:txtParametro").Value = "0102201807099053365200120011110000131059846951111"
Application.Wait (Now + TimeValue("0:00:03"))
ie.Document.getElementById("frmPrincipal:btnBuscar").Click
Application.Wait (Now + TimeValue("0:00:03"))
ie.Document.getElementById("frmPrincipal:tablaCompRecibidos:0:lnkXml").Click
End Sub

Adjunto mi codigo

ojo este código llega hasta el cuadro de dialogo de la imagen que pase

Aja, entonces al hacer "click", a través del VBA, a cierto botón automáticamente comienza la descarga y sale el mensaje con la pregunta en cuestión. Hasta donde recuerdo, cuando se usa "Internet explorer" hay tres posibilidades de evitar que salgala dichosa pregunta:

1- Configurar el navegador para que la descarga sea directa. Hay que cambiar varias opciones de la configuración del IE incluso, creo, señalándole el tipo de archivo para el que queremos eviatar la dichos pregunta.

2- Usar "SendKeys" para mandar "pulsaciones" y elegir la opción directamente la opción que necesitamos como por ejemplo "Guardar". Hay que."calcular" bien las pulsaciones y recordar que no es un método 100% seguro.

3- Intentar hacerlo usando funciones de la API de Windows para lo que hay que saber bien cuáles y cómo usarlas.

Esas son las soluciones que se me ocurren.

Abraham Valencia

Hola. Gracias por la respuesta. Sobre el primer punto se guarda en una dirección pero necesito definir el nombre. Con el método que indicas lo guarda con el nombre que define la página de internet.

El tema de las pulsaciones voy a revisar de que se trata porque no tengo idea. Recuerda que la idea es que automáticamente se defina un nombre y una dirección.

Lo de las API lo que he encontrado es que guarda el archivo excel y no hace nada con el cuadro de dialogo que esta abierta. O al menos las API que yo conozco.

Uso internet explorer

Haciendo una combinación de funciones de la API y "SendKeys" se puede lograr/intentar pero depende de varios factores, entre ellos, por ejemplo mencionas que usar IE pero no que versión ¿será la 11? OJO, no es fácil de aplicar/entender, mira

http://faidootdoot.blogspot.pe/2015/04/excel-vba-automate-save-as-file-using.html 

Abraham Valencia

¡Gracias!  Por tu ayuda. En realidad trate de entender el link que me dejaste pero no tuve resultados.

El metodo send keys fue mi unica opcion y por suerte el archivo se guarda con un nombre especifico. Por lo que agregue a mi cosigo el metodo name para darle un nombre y una ubicacion distinta a la que le dio la pagina.

Millon gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas