ayuda multidescargas

20/07/2007 - 21:36 por daniel | Informe spam
Hola a todos
haber si me podeis ayudar con lo siguiente:
tengo una hoja excel en la columna A tengo la lista con las direcciones de
la descarga de los archivos
y en la columna B la ruta donde se deben guardar el archivo descargado.
y necesito que en un listbox1 me muestre la lista de archivos y en el
listbox con la opcion multiselect poder descargar los archivos seleccionados
y en el label1 me muestre los archivos que van descargados ejemplo 1/10.
uso la siguiente macro para descargar uno:
'-

Option Explicit

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 DownloadFromUrl(strFullUrl As String, _
strSaveFile As String) As Boolean


Dim RetVal As Long

RetVal = URLDownloadToFile(0, "ruta del archivo", _
"c:\Documents and Settings\DANIEL\Escritorio\Yahoo.htm", 0, 0)

If RetVal = 0 Then
DownloadFromUrl = True
End If

End Function

Sub Prueba()


Dim x As String

If DownloadFromUrl("ruta del archivo", x) Then
MsgBox "Ok ...Descarga exitosa"
Else
MsgBox "Imposible :-( ..., intentolo en otro momento :-P "
End If
End Sub

un saludo y muchas gracias
Daniel

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/07/2007 - 06:48 | Informe spam
hola, daniel !

Mostrar la cita
1) con el siguiente ejemplo, necesitaras solo la declaracion de la API: -> Private Declare Function URLDownloadToFile

2) como no indicas [+/- exactamente] 'como' le pasas al listbox el contenido de las columnas A y B -?-
-> estoy suponiendo que lo haces por medio de la propiedad: -> RowSource -???-
[tambien *asumo/supongo/propongo/...* que no sea necesario un MsgBox para avisar si hubo exito o no con la descarga] -???-

3) copia las siguientes lineas en el modulo de codigo del formulario [DESPUES de la declaracion de la API]

Dim Total As Byte, Seleccionados As Byte, Procesar() As Boolean, _
Sig As Byte, Procesando As Byte
Private Sub UserForm_Initialize()
Total = ListBox1.ListCount
ReDim Procesar(Total)
End Sub
Private Sub ListBox1_Change()
With ListBox1
Seleccionados = Seleccionados + IIf(.Selected(.ListIndex), 1, -1)
Procesar(.ListIndex) = .Selected(.ListIndex)
End With
End Sub
Private Sub CommandButton1_Click()
With ListBox1
For Sig = LBound(Procesar) To UBound(Procesar)
If Procesar(Sig) Then
Procesando = Procesando + 1
Label1.Caption = Procesando & " / " & Seleccionados
URLDownloadToFile 0, .List(Sig, 0), .List(Sig, 1), 0, 0
End If
Next
End With
End Sub

corrige donde mis supuestos esten equivocados, haz algunas pruebas y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Mostrar la cita
#2 daniel
22/07/2007 - 22:15 | Informe spam
Hola Hector Miguel
Muchas gracias por responder
si utilizo el RowSource para traer los datos al listbox.
la macro que me pasate no me guarda los archivos descargados en la carpeta
que yo ponga en la columna B
si que me pone los datos en el listbox1 y al seleccionarlos y dar en
comandbutton pone en el label1 ejem 2/2
pero cuando miro en la carpeta no se encuentran los archivos,
esta es la macro creo que si que la e puesto bien

Option Explicit

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

Dim Total As Byte, Seleccionados As Byte, Procesar() As Boolean, _
Sig As Byte, Procesando As Byte


Private Sub UserForm_activate()

Total = ListBox1.ListCount
ReDim Procesar(Total)
End Sub
Private Sub ListBox1_Change()
With ListBox1
Seleccionados = Seleccionados + IIf(.Selected(.ListIndex), 1, -1)
Procesar(.ListIndex) = .Selected(.ListIndex)
End With
End Sub
Private Sub CommandButton1_Click()
With ListBox1
For Sig = LBound(Procesar) To UBound(Procesar)
If Procesar(Sig) Then
Procesando = Procesando + 1
Label1.Caption = Procesando & " / " & Seleccionados
URLDownloadToFile 0, .List(Sig, 0), .List(Sig, 1), 0, 0
End If
Next
End With
End Sub

-
un saludo y muchas gracias por tu ayuda
Daniel

"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#3 Héctor Miguel
23/07/2007 - 00:19 | Informe spam
hola, daniel !

Mostrar la cita
de acuerdo con tu mensaje inicial, concretamente las dos primeras *indicaciones*:
"> tengo una hoja excel en la columna A tengo la lista con las direcciones de la descarga de los archivos"
"> y en la columna B la ruta donde se deben guardar el archivo descargado."

1) es muy probable que en la columna 'B' especifiques SOLAMENTE *la ruta* [ya que los ejemplos son *cripticos*] -?-

2) lo que se requiere, es que *la ruta* INCLUYA el nombre y la EXTension tal-co[mo] quieres que sea guardada CADA descarga
[p.e.] lo siguiente es lo que yo puse como ejemplo antes de postear la propuesta:
[A2:A6]
'http://www.contextures.com/extractunique.zip
'http://www.contextures.com/datavalinputmsgalt.zip
'http://www.contextures.com/dinnerplanner.zip
'http://www.cpearson.com/zips/shellandwait.zip
'http://www.cpearson.com/zips/subcla...scroll.zip
[B2:B6]
c:\documents and settings\hmod\mis documentos\debra file 01.zip
c:\documents and settings\hmod\mis documentos\debra file 02.zip
c:\documents and settings\hmod\mis documentos\debra file 03.zip
c:\documents and settings\hmod\mis documentos\chip file 01.zip
c:\documents and settings\hmod\mis documentos\chip file 02.zip

=> *que* es lo que pones tu en la columna B [es un detalle que NO has expuesto] -???-

comentas [si hubiera] algun detalle *en el tintero* ?
saludos,
hector.

__ el codigo expuesto __
Mostrar la cita
__ mensajes previos __
Mostrar la cita
#4 daniel
23/07/2007 - 19:38 | Informe spam
Hola Hector Miguel
muchisimas garcias ya funciona perfectamente
donde habria que cambiar el codigo para que hiciese lo siguiente
1 que aparezca un mensaje al terminar de descargar todos los archivos
seleccionados
2 que muestre un mensaje si a habido algun fallo en la descarga
3 que en el label3 muestre el archivo que se esta descargando en ese
momento.
4 en un checkbox poner si esta marcado que internet se desconecte al
terminar las descargas
5 si al abrir el userform internet no esta conectado que muestre la ventana
de conectar




un saludo y muchas gracias
Daniel


"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#5 Héctor Miguel
24/07/2007 - 00:12 | Informe spam
hola, daniel !

Mostrar la cita
1, 2 y 3) [una alternativa]:
-> una vez terminado el proceso de las descargas, comprobar por un nuevo bucle si todos los archivos *existen*
modifica el codigo en el commandbutton +/- a lo siguiente:

Private Sub CommandButton1_Click()
Dim Msj As String
With ListBox1
For Sig = LBound(Procesar) To UBound(Procesar)
If Procesar(Sig) Then
Procesando = Procesando + 1
Label1.Caption = Procesando & " / " & Seleccionados
Label3.Caption = "Procesando: " & .List(Sig, 0)
Me.Repaint
URLDownloadToFile 0, .List(Sig, 0), .List(Sig, 1), 0, 0
End If:
Next
For Sig = LBound(Procesar) To UBound(Procesar)
If Procesar(Sig) Then If Dir(.List(Sig, 1)) = "" Then Msj = vbCr & Msj & .List(Sig, 0)
Next
End With
If Msj <> "" Then Msj = vbCr & "Los siguientes archivos NO se descargaron:" & Msj
MsgBox "Proceso terminado." & Msj
End Sub

4 y 5) considerando que existen varias alternativas de conexion a internet -?-
-> revisa/adapta/comenta/... ejemplos desde la pagina de Randy Birch
Visual Basic Network Services
InternetGetConnectedState: Determine Network Connection Type
http://vbnet.mvps.org/code/network/...dstate.htm

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Ads by Google
Search Busqueda sugerida