Come scaricare un file FTP mediante Access

tramite: O2O
Difficoltà: media
16

Introduzione

Se state leggendo questa guida è perché ogni giorno dovete scaricare decine di file mediante FTP e magari importarli manualmente sul vostro DB Access.  Qui cercherò di spiegare brevemente come creare dei processi in VBA che vi permetta di automatizzare il caricamento. Il codice che sto per descrivere è essenziale, da qui sarete voi ad adattarlo alle vostre esigenze.

26

Occorrente

  • Microsoft Office
36

Per iniziare diamo per scontato che siamo già in possesso di Microsoft Office, che conosciamo già Access e che siamo abbastanza pratici di VBA. Data questa premessa iniziamo con:
-Importare librerie Outlook
1. Apriamo la console di scrittura codice (Alt+F11)
2. Strumenti->Riferimenti
3. Spuntare la voce “Microsoft ActiveX DataObjects 2.1 Library”
4. OK
-accertiamoci di non avere chiusure sul firewall, o di aver creato una regola di apertura del traffico per il nostro indirizzo FTP
-creare una regola di importazione su Access
1. Importa da dati esterni
2. Selezionare il file che si vuole caricare 3. Definire la formattazione del file 4. Salvare con nome la regola

Siamo pronti per scrivere il codice.

46


Per prima cosa creiamo una maschera in cui inserire i dati principali che ci occorrono per connetterci al server FTP:
-Host name: nome o indirizzo del server FTP
-Percorso e nome File
-Username
-Password
-Porta se occorre

Dopo aver creato la maschera andremo a definire due funzioni:
-DownloadFTPFile: per il download e il caricamento dei file
-ShellWait: per l’esecuzione di script da DOS

Partiamo dall’ultima. La ShellWait è una funzione che ci permette di eseguire script DOS passando direttamente il controllo al sistema operativo. Riporto la funzione per intero:
• Public Sub ShellWait (Pathname As String, Optional WindowStyle As Long)
• If EnableHandler Then On Error GoTo Err_Handler

• Dim proc As PROCESS_INFORMATION
• Dim start As STARTUPINFO
• Dim ret As Long

• ' Initialize the STARTUPINFO structure:
• With start
•. Cb = Len (start)
• If Not IsMissing (WindowStyle) Then
•. DwFlags = STARTF_USESHOWWINDOW
•. WShowWindow = WindowStyle
• End If
• End With
• ' Start the shelled application:
• ret& = CreateProcessA (0&, Pathname, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
• ' Wait for the shelled application to finish:
• ret& = WaitForSingleObject (proc. HProcess, INFINITE)
• ret& = CloseHandle (proc. HProcess)

• Exit_Here:
• Exit Sub
• Err_Handler:
• MsgBox Err. Description, vbExclamation, "E R R O R"
• Resume Exit_Here

• End Sub

In questo caso non abbiamo definito un tempo limite per il dowload (wait INFINITE) ma è possibile definire il tempo in millisecondi. La documentazione online aiuta a personalizzare il tutto.
Passando attraverso il sistema operativo possiamo utilizzare la funzione FTP del DOS, senza incorrere in problemi di librerie e rendendo questo codice utilizzabile in tutte le versioni di Access.

Continua la lettura
56

Andiamo ora a scrivere la funzione vera e propria. Qui verrà esposto solo l’essenziale, i controlli sul formato e i virtuosismi li lascio fare a voi. La definizione della funzione sarà:

- Public Function DownloadFTPFile (ByVal FileDaScaricare As String, HostServer As String, Folder As String, UserID As String, Password As String, LocalFolder as String)

Spieghiamo le variabili passate come parametro più altre presenti nella funzione:
- FileDaScaricare: nome del file da scaricare
- HostServer: indirizzo del server FTP
-Folder: percorso sul server FTP dove è presente il file
-UserID: username per accedere al server
-Password-Intero FileScript: identificatore del file in cui scriveremo lo script di download
-String Target: q & LocalFolder & "\" & FileDaScaricare & q
-String Execution

Una volta definite le variabili ecco il pezzo forte che scrivo per intero:
-FileScript = FreeFile
-Open sScrFile For Output As FileScript
-Print #FileScript, "open " & HostServer
-Print #FileScript, UserID
-Print #FileScript, Password
-Print #FileScript, "cd " & Folder
-Print #FileScript, "binary"
-Print #FileScript, "lcd " & q & LocalFolder & q
-Print #FileScript, "get " & FileDaScaricare & " " & Target
-Print #FileScript, "bye"
-Close #FileScript
-Execution = Environ$("COMSPEC")
-Execution = Left$(Execution, Len (Execution) - Len (Dir (Execution)))
-Execution = Execution & "ftp. Exe -s:" & q & sScrFile & q
-ShellWait Execution, vbHide
-DoEvents
-Kill (FileScript) ‘’’’’’’’cancelliamo il file

Nel codice sopra viene creato uno script DOS che viene eseguito dal sistema operativo. I comandi sono quelli della funzione FTP di DOS, potete modificare lo script a vostro piacimento, in rete trovate la documentazione.

A questo punto il file è presente nella cartella di destinazione e possiamo importare i dati mediante:
-DoCmd. TransferText acImportFixed, “regolaDiImportazione”, "tabellaDestinazione”, Target, False

Io preferisco creare una regola di importazione in una tabella nuova temporanea che cancello prima di ogni importazione. I dati poi li inserisco nella tabella definitiva.
Come detto ho cercato di descrivere l’essenziale, da qui sarete voi a pensare alle svariate applicazioni. Io personalmente devo scaricare tutti i giorni centinaia di file da decine di percorsi FTP diversi. Per farlo tengo una tabella con l’elenco di tutti i file e percorsi in cui aggiorno la “Data di Ultimo Download” e poi vado a scaricare solo i file con “Data Update” (dato presente nel server ftp) > della “Data di Ultimo Download”, poi schedulo il processo che gira 2 volte al giorno. Se avete dubbi scrivetemi.

66

Consigli

Non dimenticare mai:
  • Verificare di avere i permessi per il download FTP

Potrebbe interessarti anche

Segnala contenuti non appropriati

Tipo di contenuto
Devi scegliere almeno una delle opzioni
Descrivi il problema
Devi inserire una descrizione del problema
Si è verificato un errore nel sistema. Riprova più tardi.
Verifica la tua identità
Devi verificare la tua identità
chiudi
Grazie per averci aiutato a migliorare la qualità dei nostri contenuti

Guide simili

Windows

Imparare ad utilizzare Windows Powershell

PowerShell è il più potente strumento di automazione che Microsoft offre. PowerShell viene fornito con Windows 8 e Server 2012. Se si possiede Windows 7, è necessario scaricare l'aggiornamento PowerShell; inoltre questo programma, presenta una vista...
Programmazione

Come progettare un sito in ASP.NET

In questa guida vi parlerò di come progettare un sito in ASP.NET. Nell'epoca in cui viviamo creare siti è diventato ormai molto semplice grazie ai molteplici strumenti che la tecnologia ci offre. Uno dei migliori modi di creare un sito è utilizzare...
Programmazione

Regole per programmare in Applescript

AppleScript, nato negli anni '90 come una sorta di estensione del MacOS che viene caricata al suo avvio, è un software di programmazione che permette agli utenti di sviluppare diverse tipologie di applicazioni, da quelle più complesse di stampo matematico,...
Windows

Come inviare email da Microsoft Access

La suite Office di Microsoft è una delle suite di software più complete in circolazione: comprende, infatti, programmi utilizzati da centinaia di milioni di utenti, come Word e Power Point, ma anche utility destinate ad una cerchia di utenti più ristretta,...
Programmazione

Come validare un form con JavaScript

Al fine di rendere più interessante ed accattivante un sito, colui che si occupa della sua realizzazione, deve essere capace di rendere la pagina web il più interattiva possibile in modo che, l'utente possa "interagire" con i suoi contenuti. Uno dei...
Programmazione

Come mandare una mail in PHP

Inviare un'email in PHP, per un programmatore abbastanza pratico del linguaggio in HTML, è un'operazione abbastanza semplice ed intuitivo. Questo è possibile in quanto è presente, di default, l'apposita funzione mail nelle librerie, senza che sia necessario...
Programmazione

Come iniziare con JSON

Sia che siate degli studenti o dei programmatori di lungo corso sicuramente conoscerete la sigla Json che sta per JavaScript Object Nation. SI tratta infatti di un importantissimi linguaggio basato su javaScript Standard e utilizzato in AJAX come alternativa...
Programmazione

Creare uno script sicuro per il login usando PHP e MySQL

In questo tutorial di oggi, vi forniremo i dettagli molto approfonditamente ed anche dettagliata, su come creare uno script sicuro per il login usando PHP e MySQL, evitando in maniera definitiva, attacchi dall'esterno. I siti web e i loro database sono...
I presenti contributi sono stati redatti dagli autori ivi menzionati a solo scopo informativo tramite l’utilizzo della piattaforma www.o2o.it e possono essere modificati dagli stessi in qualsiasi momento. Il sito web, www.o2o.it e Arnoldo Mondadori Editore S.p.A. (già Banzai Media S.r.l. fusa per incorporazione in Arnoldo Mondadori Editore S.p.A.), non garantiscono la veridicità, correttezza e completezza di tali contributi e, pertanto, non si assumono alcuna responsabilità in merito all’utilizzo delle informazioni ivi riportate. Per maggiori informazioni leggi il “Disclaimer »”.