Newsgroup: it.comp.appl.access
Titolo: Come sapere che il file in download e' stato scaricato completamente?

Sto testando questo codice per ricevere (n=2) su pc da server ftp
 
http://www.riolab.org/index.php?option=com_content&view=article&id=209:accedere-ai-file-via-ftp&catid=46:access&Itemid=69
 
 
Usando la sub FTPfile per ricevere un file di grosse dimensioni, vedo 
che il codice avvia tutto ed esce, il processo di scaricamento prosegue 
finche' il file richiesto e' stato scaricato completamente
 
Come fare per capire, da codice vba, quando il trasferimento e' stato 
completato?



Mi è partito... puoi usare questo... se ti basta FATTO/NON FATTO.
Se poi vuoi la progressbar si complica un poco ma sapendo la Size del file ed implementando la Callback Function al parametro lpfnCB, avrai appunto il callback con la dimensione in Byte dei pacchetti scaricati...
 
In rete si trovano esempi già fatti...
 
#If VBA7 Then
    Private Declare PtrSafe 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
#Else
    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
#End If
 
Public Function DownloadFile(sSourceUrl As String, sLocalFile As String) As Boolean
   DownloadFile = URLDownloadToFile(0&, _
                                    sSourceUrl, _
                                    sLocalFile, _
                                    BINDF_GETNEWESTVERSION, _
                                    0&) = ERROR_SUCCESS
End Function
 
Private Sub DownloadSingleFile()
    Dim sSourceUrl As String, sLocalFile As String
 
    sSourceUrl = "">
upload.wikimedia.org/.../Mercedes_V6_DTM_Rennmotor_1996.jpg
"
    sLocalFile = "C:\Temp\engine.jpg"
 
    If DownloadFile(sSourceUrl, sLocalFile) Then
        Debug.Print "File downloaded"
    Else
        Debug.Print "File download not downloaded"
    End If
End Sub
 
@Alex


Ringrazio per il suggerimento, ma ho provato e non sembra andare come 
atteso (o perlomeno come mi attenderei io)
Ho usato questo codice
 
----------------------------------
strFullURL = "ftp:\\
utente1:pass...@192.168.1.100
\FILE1.JPG"
strLocation = Application.CurrentProject.Path & "\temp\FILE1.JPG"
lReturn = URLDownloadToFile(0, strFullURL, strLocation, 0, 0)
----------------------------------
 
con piccoli file sembra andare correttamente, nel senso che li scarica e 
si possono aprire, parlo di roba da qualche Mbyte
Ma con file da 200 Mbyte o piu' non tira giu' niente, crea un file nella 
dir destinazione ma e' vuoto
E stranamente, sul server ftp (filezilla 0.9.60) non vedo nessun login e 
nessun comando per la richiesta file, sia con file piccoli (dove il 
download funziona) sia con file grossi (dove fallisce)
 
Siamo sicuri che la funzione URLDownloadToFile si possa usare anche con 
protocollo ftp?