VBA Tipp: Verzeichnis auf FTP-Server anlegen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte ein Verzeichnis auf einem FTP-Server anlegen.

Der Zugang zu dem Verzeichnis erfolgt über das FTP-Protokoll.
Für den FTP-Zugang zum Server ist ein Benutzername und ein Passwort erforderlich.

Verzeichnis anlegen

Das geht mit der folgenden VBA-Funktion, die in einem globalen Modul hinterlegt wird.

Es werden alle nicht existierenden Ordner und Unterordner des angegebenen Verzeichnisses (Parameter RemotePath) angelegt.
Es erfolgt keine Rückmeldung, ob die Aktion erfolgreich war oder nicht.
Public Function FTPOrdnerAnlegen(RemotePath As String, _
                                 Server As String, _
                                 Benutzer As String, _
                                 Passwort As String) As Boolean
 
   'Late Binding: Kein Verweis auf "Microsoft Scripting Runtime" und
   'kein Verweis auf "Windows Script Host Object Model" notwendig
 
   'Quelle: http://www.dbwiki.net/
 
 
   Const ForWriting As Long = 2
   Const WshHide    As Long = 0
 
   Dim FSO         As Object   'IWshRuntimeLibrary.FileSystemObject
   Dim WSH         As Object   'IWshRuntimeLibrary.WshShell (Windows Scripting Host)
   Dim strFTP      As String
   Dim tempDatei   As String
   Dim strOrdner() As String
   Dim strPfad     As String
   Dim varElement  As Variant
 
 
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set WSH = CreateObject("WScript.Shell")
 
   If Not Right$(RemotePath, 1) = "/" Then RemotePath = RemotePath & "/"
 
   strOrdner = Split(RemotePath, "/")
 
   'Der Name der txt-Datei ist egal
   tempDatei = "session.txt"
 
   'TextStream
   With FSO.OpenTextFile(tempDatei, ForWriting, True)
      .WriteLine "open " & Server
      .WriteLine Benutzer
      .WriteLine Passwort
 
      For Each varElement In strOrdner()
         If Len(varElement) Then
            .WriteLine "mkdir " & varElement
            .WriteLine "cd " & varElement
         End If
      Next
 
      .WriteLine "quit"
      .Close
   End With
 
   strFTP = "%systemroot%\System32\ftp.exe -s:" & tempDatei
   strFTP = WSH.ExpandEnvironmentStrings(strFTP)
   Call WSH.Run(strFTP, WshHide, True)
 
   FSO.DeleteFile tempDatei, True
 
End Function

Aufruf

   Const Server        As String = "www.meine-domain.de"
   Const Benutzer      As String = "12345678"
   Const Passwort      As String = "geheim"
   Const RelRemotePath As String = "htdocs/MeinOrdner/MeinUnterordner"
 
   Call FTPOrdnerAnlegen(RelRemotePath, Server, Benutzer, Passwort)

Wikilinks

Weblinks