Saltar al contenido

Descargar archivo con medidor de progreso en VBA

Buscamos por diferentes espacios para así brindarte la respuesta para tu problema, si tienes preguntas deja la duda y te contestaremos sin falta.

Solución:

He hecho esto usando las funciones wininet.dll. Lamentablemente, no puedo pegar mi código porque es propiedad de mi empleador.

Use InternetOpen e InternetOpenUrl para iniciar la descarga, HttpQueryInfoLong para obtener la longitud del contenido y luego llame repetidamente a InternetReadFile para leer datos en un búfer (yo uso un búfer de 128k), escribir los datos en un archivo y actualizar la barra de progreso a medida que avanza.

Declaraciones para empezar:

Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" (ByVal hHttpRequest As Long, ByVal lInfoLevel As Long, ByRef sBuffer As Any, ByRef lBufferLength As Long, ByRef lIndex As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByRef Buffer As Any, ByVal lNumberOfBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000 ' use keep-alive semantics - required for NTLM proxy authentication
Private Const HTTP_QUERY_CONTENT_LENGTH = 5
Private Const HTTP_QUERY_FLAG_NUMBER = &H20000000

Si necesitas alguna aclaración, publica un comentario.

Aquí puedes ver las comentarios y valoraciones de los usuarios

Si sostienes alguna indecisión y disposición de enriquecer nuestro tutorial puedes escribir una glosa y con gusto lo observaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *