VBA Tipp: Verzeichnis auf FTP-Server löschen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

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

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 löschen

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

Es kann nur ein leerer Ordner gelöscht werden.
Es erfolgt keine Rückmeldung, ob die Aktion erfolgreich war oder nicht.
Public Function FTPOrdnerLöschen(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
 
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set WSH = CreateObject("WScript.Shell")
 
   'Der Name der txt-Datei ist egal
   tempDatei = "session.txt"
 
   'TextStream
   With FSO.OpenTextFile(tempDatei, ForWriting, True)
      .WriteLine "open " & Server
      .WriteLine Benutzer
      .WriteLine Passwort
      .WriteLine "rmdir " & RemotePath
      .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.eine-domain.de"
   Const Benutzer       As String = "12345678"
   Const Passwort       As String = "geheim"
   Const RelRemotePath  As String = "htdocs/EinOrdner/EinUnterordner"
 
   Call FTPOrdnerLöschen(RelRemotePath, Server, Benutzer, Passwort)

Wikilinks

Weblinks