** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Barra de progreso en descarga
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBarra de progreso en descarga

 Responder Responder Página  12>
Autor
Mensaje
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Tema: Barra de progreso en descarga
    Enviado: 05/Octubre/2017 a las 18:07
Buenas!!

Estoy buscando informacion de como poner una barra de progreso a una descarga realizada por vba.
Ejemplos de barras de progreso hay muchas, pero no encuentro ninguna que sea en una descarga desde un servidor web.
Estoy utilizando esto para las descargas.
El tema seria capturar lo que se va bajando e ir actualizando, ni idea de como hacerlo y no se si con este metodo se puede hacer, creo y corregirme si me equivoco que este proceso detiene la ejecucion de codigo hasta que finaliza la descarga.

A ver si me podeis orientar algo que estoy bastante perdido.

Saludos


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 DownloadFile(URL As String, LocalFilename As String) As Boolean

    Dim lngRetVal As Long

    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)

    If lngRetVal = 0 Then DownloadFile = True

End Function

Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 8975
Enlace directo a este mensaje Enviado: 05/Octubre/2017 a las 23:16
Con ese código que amablemente te a ofrecido Buho (Saludos !) no creo que vayas a poder ponerle una barra de progreso, tendrás que usar la librería Inet para poder leer el tamaño del archivo y leer byte a byte para saber el progreso real de la descarga.

Usa un buscador en internet para encontrar referencias de dicha librería.

Saludos !!
Edito:

Edito: Te pego un ejemplo que encontré buscando el San Google:
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/79.htm
< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">

Editado por MexMan70 - 05/Octubre/2017 a las 23:25
OneDrive: https://1drv.ms/f/s!AhsRUsxKwte3gVJR2a-FgxJL8H6R
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 05/Octubre/2017 a las 23:37
Hola MexMan70
Con ese ejemplo es con el que estoy practicando, San Google, lo encuentra casi todo,en el usa un control de barra de progreso, pero no tengo claro si access lo tiene como tal????

Estoy intentando adaptar una barra de progreso "casera", pero si mucho exito de momento.....

Saludos
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 4180
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 00:17
Hola!

Mírate este enlace a ver si puedes sacar algo.
Un Saludo.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 10:09
Buenas!!
Estoy trasteando con esta opcion, que quizas sea la que mejor se adapte a lo que busco, pero estoy atascado en el control inet
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/79.htm#1

Me dice que ponga estos controles en el formulario
  • Colocar un control Inet llamado Inet1
  • Un control Command para comenzar a descargar
  • Un control Progressbar
  • Un Text1 para indicar la url del archivo
  • un Text2 para indicar la ruta y el nombre donde guardarlo

Tengo todos menos el control Inet, que no aparece por ningun lado, utilizo access 2013, pero  se va a utilizar en un equipo con access 2003. y la estoy creando como mdb.

A ver si me dais alguna pista...


Saludos y gracias

Arriba
buho Ver desplegable
Administrador
Administrador
Avatar

Unido: 10/Abril/2004
Localización: Frenopático
Estado: Sin conexión
Puntos: 11233
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 11:17
¿No es el Microsoft Internet Transfer Control?
Yo hace ya muchismo que no opero ya con Access y VBA y la memoria me flaquea, pero creo recordar que este "control" estaba perfectamente asequible desde Access.
Foro Offline GRATIS:BAJAR.
Página WEB:Web

Saludos desde Valladolid
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 12:47
Hasta aqui habia llegado y estoy mirando en los controles activeX, pero no lo veo, ni en acces 2013 ni en 2003, la progressBar si que esta en los controles activeX pero Microsoft Internet Transfer Control no lo veo, algo me estoy perdiendo!!!
ConfusedConfused



Editado por buho - 06/Octubre/2017 a las 17:29
Arriba
buho Ver desplegable
Administrador
Administrador
Avatar

Unido: 10/Abril/2004
Localización: Frenopático
Estado: Sin conexión
Puntos: 11233
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 17:36
¿En referencias (Editor de VBA, sección referencias) tampoco ves el OCX del Microsoft Internet Transfer Control 6.0 ( SP4) ?
El nombre interno es MSINET.OCX y debería estar en el SYSTEM32 del directorio de Windows.


https://es.dll-download-system.com/index.php?option=com_docman&task=doc_download&gid=300&Itemid=99999999
Foro Offline GRATIS:BAJAR.
Página WEB:Web

Saludos desde Valladolid
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 18:09
Publicado originalmente por buho buho escribió:

¿En referencias (Editor de VBA, sección referencias) tampoco ves el OCX del Microsoft Internet Transfer Control 6.0 ( SP4) ?....

Madre mia que pelea estoy teniendo jaja
Pues no salia en referencias.......Angry  me he bajado el OCX, lo he registrado tanto para 32 como para 64 bits
Ahora si sale en controles activeX y en referencias, pero me dice cuando lo selecciono en controles, No tiene la licencia necesaria para utilizar este control activeX?????

https://www.mancera.org/2014/07/27/registrar-un-archivo-ocx-o-dll-en-windows-7-8-8-1-x86-y-x64/
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 8975
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 20:23
Puedes usar este código para mostrar el progreso sin programar nada:

Option Compare Database
Option Explicit

Public Declare Function DoFileDownload Lib "shdocvw.dll" _
        (ByVal lpszFile As String) As Long

Public Function sDownloadHTTP(strURL As String)
    strURL = StrConv(strURL, vbUnicode)
    DoFileDownload (strURL)
End Function

También puedes mirar el enlace que te dejo a continuación para modificar a tu gusto la descarga:
http://vbnet.mvps.org/index.html?code/internet/dofiledownloadcustom.htm

Saludos !!
< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
OneDrive: https://1drv.ms/f/s!AhsRUsxKwte3gVJR2a-FgxJL8H6R
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 20:46
Buenas!!

Ya lo tengo probado y funciona, la pega que te pide que eligas donde gurdarlo.
Por el enlace tambien he andado. Aun lo tengo que mirar mas, parece que hay una opcion que te permite que salga el progreso de la descarga pero se guarda donde tu le digas por vba. Pero se ve bastante complicado..

Saludos
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 8975
Enlace directo a este mensaje Enviado: 06/Octubre/2017 a las 21:11
No lo veo complicado, de hecho esta bastante documentado. En definitiva es más código pero para obtener el resultado deseado debes de caminar un poco mas ;)

Saludos !!
< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
OneDrive: https://1drv.ms/f/s!AhsRUsxKwte3gVJR2a-FgxJL8H6R
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 10/Octubre/2017 a las 09:44
Buenas!!
Para el tema de hacer funcionar Inet esta es la solucion.
https://sites.google.com/site/jjjt1973/registra-ocx-con-problemas-de-licencias-desde-access

Ahora a ver si consigo que me funcione la barra......
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 999
Enlace directo a este mensaje Enviado: 12/Octubre/2017 a las 18:31
Buenas!!
He conseguido que me funcione la barra de progreso con INET, la solucion en mi caso estaba en el post de arriba.
Ha esta barra le faltaria un contador de %, estoy intentando ponerla pero sin ningun exito y sin saber exactamente lo que hago o si se puede.
El codigo completo es este. Veo la parte de codigo donde manda aumentar la barra pero no se como poner una etiqueta que capture los datos y vaya poniendo el % de la descarga, a ver si me podeis dar alguna pista o idea, o si se puede???

Saludos

  1. Option Explicit  
  2.   
  3. Private Sub Command1_Click()  
  4.       
  5.     'Propiedades para el control inet ( AccessType y URL )  
  6.     With Inet1  
  7.         .AccessType = icUseDefault  
  8.         'Indicamos el url del archivo  
  9.         .URL = Trim(Text1.Text)  
  10.         'Indicamos que vamos a descargar o recuperar un archivo desde una url  
  11.         .Execute , "GET"  
  12.     End With  
  13. End Sub  
  14.   
  15. Private Sub Form_Load()  
  16.   
  17.     Command1.Caption = " Descargar "  
  18.     Me.Caption = " Ejemplo del control Inet para " & _  
  19.                  "descargar un fichero con progreso"  
  20.   
  21. End Sub  
  22.   
  23.   
  24. Private Sub Inet1_StateChanged(ByVal State As Integer)  
  25.   
  26. On Error GoTo Err_Sub  
  27.   
  28.     Dim tempArray() As Byte ' Un array para grabar los datos en un archivo  
  29.     Dim bDone As Boolean  
  30.     'Para el tamaño del archivo en bytes que se usa para el array  
  31.     Dim filesize As Long  
  32.     ' Acá almacenamos los datos  
  33.     Dim vtData As Variant  
  34.   
  35.     Select Case State  
  36.   
  37.         Case icResponseCompleted  
  38.             bDone = False  
  39.             'Para saber el tamaño del fichero en bytes  
  40.             filesize = Inet1.GetHeader("Content-length")  
  41.             'Creamos y abrimos un nuevo archivo en modo binario  
  42.             Open Text2.Text For Binary As #1  
  43.           
  44.             ' Leemos de a 1 Kbytes. El segundo parámetro indica _  
  45.             el tipo de fichero. Tipo texto o tipo Binario, en este caso binario  
  46.             vtData = Inet1.GetChunk(1024, icByteArray)  
  47.   
  48.             DoEvents  
  49.            
  50.             'Si el tamaño del fichero es 0 ponemos bDone en _  
  51.             True para que no entre en el bucle  
  52.             If Len(vtData) = 0 Then  
  53.                 bDone = True  
  54.             End If  
  55.               
  56.             With ProgressBar1  
  57.                 .Value = 0  
  58.                 .Max = filesize  
  59.             End With  
  60.               
  61.             Do While Not bDone  
  62.                 'Almacenamos en un array el contenido del archivo que se va leyendo  
  63.                 tempArray = vtData  
  64.                 'Escribimos los datos en el archivo  
  65.                 Put #1, , tempArray  
  66.                 'Leemos  datos de a 1 kb (1024 bytes)  
  67.                 vtData = Inet1.GetChunk(1024, icByteArray)  
  68.            
  69.                 DoEvents  
  70.                 'Aumentamos la barra de progreso  
  71.                 ProgressBar1.Value = ProgressBar1.Value + (Len(vtData) * 2)  
  72.               
  73.                 If Len(vtData) = 0 Then  
  74.                     bDone = True  
  75.                 End If  
  76.             Loop  
  77.   
  78.         Close #1  
  79.       
  80.         MsgBox "Archivo descargado correctamente", vbInformation  
  81.         ProgressBar1.Value = 0  
  82.     End Select  
  83.   
  84. Exit Sub  
  85.   
  86. Err_Sub:  
  87.     MsgBox Err.Description, vbCritical  
  88.     On Error Resume Next  
  89.     Inet1.Cancel  
  90.     ProgressBar1.Value = 0  
  91. End Sub  
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 8975
Enlace directo a este mensaje Enviado: 12/Octubre/2017 a las 19:45
Es muy sencillo de mostrar el porcentaje.

1.- Crear un control de cuadro de texto y llamarlo p.e. : PorcentajeDown
2.- Daelr el formato adecuado (Porcentaje)
3.- Hacer el calculo y pasarlo a dicho control:
---
          DoEvents  
          'Aumentamos la barra de progreso  
          ProgressBar1.Value = ProgressBar1.Value + (Len(vtData) * 2)
          Me.PorcentajeDown = ProgressBar1.Value / filesize
---

Saludos !!


< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
OneDrive: https://1drv.ms/f/s!AhsRUsxKwte3gVJR2a-FgxJL8H6R
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable