#

Download:

Datei 1: 23_Access_FTP.zip

Access: FTP List, Rename, Download

 

 

In Microsoft Access Anwendungen kommt es immer wieder vor, dass man Dateien von einem entfernten FTP Server herunterladen muss um diese anschliessend

In den Datenbestand zu integrieren

Diese kleine Microsoft Access Demo zeigt wie man Dateien per ftp unter Microsoft Access herunterladen kann.

Hierzu muss man in der Codedatei lediglich die shell32 einbinden und schon hat man einen vollwertigen ftp Zugriff wie unter einem Windows 10 Dateiexplorer.

 

Download:

zum Download von Dateien unter dem FTP Server zu einem lokalen Verzeichnis

verwendet man die .CopyHere Methode eines Shell Folders

'< download >

addLog "download " & sFilename

folder_Local.CopyHere folder_Remote_Ftp.Items.Item(sFilename)

'</ download >

 

Rename:

Und zum Umbenennen benötigt man keinen Rename Befehl, sondern ändert direkt den Filenamen

Die ftp Datei erhält man, indem man ein Item des FtpFolders mit Namen übernimmt

 

'< rename >

addLog "rename " & sFilename

folder_Remote_Ftp.Items.Item(sFilename).Name = sFilename & "_done.csv"

'</ rename >

 

 

Im Anhang ist eine Access Datei, die einen Download von csv Text Files aus einem FTP-Verzeichnis durchführt und die gefundenen Dateien

Zur Demonstation umbenennt in _done

 

Zum Testen einer ftp-Server kann man heutzutage hervorragend ein Smartphone nehmen und hier einen kostenlosen FTP Server installieren. Der Aufwand ist in wenigen Minuten erledigt.

 

Im Windows 10 Phone  (FTP Server Pavel, Lumia 950 xl)

Beim Verwenden eines Smartphones Windows 10 sollte man als Pfad den C:/Data/Users/Public verwenden, denn ansonsten verschwinden Dateien die man an ungültigen Pfaden abgelegt hat und diese beim nächsten Aufruf der FTP Server Adresse dann verzweifelt sucht.

ftp://user:password@192.168.178.23/C:/Data/Users/Public/

 

 

Rename Files

Zum Umbenennen von Files auf dem FTP Server findet man keinen Rename Befehl, sondern man kann direkt das Item.Name umbennen

'< rename >

addLog "rename " & sFilename

folder_Remote_Ftp.Items.Item(sFilename).Name = sFilename & "_done.csv"

'</ rename >

 

 

 

Während des Debuggens in Microsoft Access (Office vba) hat man den vollen Zugriff auf den ftp-Folder und auf die ftp-files, welche als Folder-Items erreicht werden.

 

Kompletter Microsoft Access Code vba / makro:

Option Compare Database

Option Explicit On

 

 

'==========================< Form >===========================

Private Sub Form_Open(Cancel As Integer)

    '--------< Form_Open() >--------

    tbxFolder_Local = CurrentProject.Path

    '--------</ Form_Open() >--------

End Sub

'==========================</ Form >===========================

 

 

'==========================< Buttons >===========================

Private Sub Btn_Get_FTP_Click()

    '--------< Btn_Get_FTP_Click() >--------

    '< reset >

    ctlStep = ""

    ctlLog = ""

    '</ reset >

 

    fl_Download_FTP()

    '--------</ Btn_Get_FTP_Click() >--------

End Sub

'==========================</ Buttons >===========================

 

 

 

'==========================< Functions >===========================

' Shell variant

' Requires reference to Microsoft Shell Controls and Automation

Private Sub fl_Download_FTP()

    '--------< fl_Download_FTP() >--------

    '< get FileExplorer Functions >

    Dim myShell As Shell

    myShell = New Shell

    '</ get FileExplorer Functions >

 

 

    '< Local Folder >

    addLog "get local Folder"

    Dim folder_Local As Folder          'Shell32.Folder on PC,

    folder_Local = myShell.Namespace(CurrentProject.Path)   'current folder of access

    '</ Local Folder >

 

    '< remote ftp-folder >

    '*get ftp folder, connect

    addLog "get remote FTP Folder"

    Dim sFtp_URL As String

    sFtp_URL = tbxFolder_Remote_FTP

 

    Dim folder_Remote_Ftp As Folder

    folder_Remote_Ftp = myShell.Namespace(sFtp_URL)  'ftp://User:Password@ftp-IP

    '</ remote ftp-folder >

 

    'folder_Remote_Ftp.CopyHere folder_Local.Items.Item("Datei_1.csv")

 

    '----< @Loop: Folder-Items >----

    Dim iFile As Long

    iFile = 0

    Dim varItem

    For Each varItem In folder_Remote_Ftp.Items

        '----< Folder-Item >----

        '< init >

        iFile = iFile + 1

        Dim sFilename As String

        sFilename = varItem.Name

        '</ init >

 

        '< download text-files >

        addLog iFile & " " & sFilename

        If sFilename Like "*csv" Then

            '< download >

            addLog "download " & sFilename

            folder_Local.CopyHere folder_Remote_Ftp.Items.Item(sFilename)

            '</ download >

 

            '< rename >

            addLog "rename " & sFilename

            folder_Remote_Ftp.Items.Item(sFilename).Name = sFilename & "_done.csv"

            '</ rename >

        End If

        '</ download text-files >

        '----</ Folder-Item >----

    Next

    '----</ @Loop: Folder-Items >----

    '

 

    MsgBox "ok  "

    '--------</ fl_Download_FTP() >--------

End Sub

'==========================</ Functions >===========================

 

 

 

Mobile

.

0123movie.net