Clever-Excel-Forum

Normale Version: SFTP Datenzugriff
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

erst einmal eine allgemeine Frage.
Ist es möglich mit Excel auf einen SFTP Server zuzugreifen, dort zu Prüfen ob Dateien in einem Ordner vorhanden sind, wenn ja diese von dort herunterzuladen und dann dort zu löschen?
Und das selbe dann mit einem anderen Ordner in die entgegengesetzte Richtung.
Ich hatte mich damit zuletzt auch beschäftigt (ftp) und bin letztlich auf das Kommandozeilen-Tool "curl.exe" (https://curl.haxx.se/) gestoßen, das du über die WScript.Shell aufrufen kannst, entweder direkt oder über eine cmd-Datei (bietet sich eher an, da die Parameter für curl etwas tricky sind). Falls das für dich ein Lösungsweg ist, dann stelle ich den hier vor.

Viel Erfolg!
Hallo,

ich dachte "cURL" gäbe es nur in Linux.

Zumindest früher konnte man auch mit dem InternetExplorer auf FTP zugreifen, eventuell muss das in den Einstellungen freigeschaltet werden.

Auch im CMD-Fenster gibt es FTP, das allerdings ein Untermenü öffnet.

Versuche es zuerst in CMD bzw IE, wenn das geht, kann man es vielleicht auch aus Excel per VBA ansteuern.

mfg
Hallo, danke für die Hinweise.

Zur Zeit benutze ich dafür Filezilla bzw auch Winscp.
Für mich kein Problem.

Aber ich möchte diesen Filetransfer eigentlich möglichst einfach, am besten völlig Vollautomatisch lösen. Um auch evtl. Bedienungsfehler unerfahrener Benutzer zu vermeiden. (z.B. es wird ja schnell mal ein Verzeichniss gewechselt, und schon landet die Datei sonstwo)
Daher bin ich auf die Idee gekommen das evtl per VBA zu lösen. Je eine Datei für den Down- und Upload.

Excelatei öffnen-> Daten werden geprüft, wenn was vorhanden-> download -> Dateien auf Server löschen -> Exceldatei schliessen

Mit Excel wäre das von fast jedem Rechner möglich ohne eine extra Software zu insten.
Hallo, :19:

Du kannst WinSCP als COM-Objekt einbinden und dann alles automatisieren: Exclamation

Using WinSCP .NET Assembly from Visual Basic for Applications (VBA)...

Läuft prima. :21:
Hallo,

als ich den Link von Case speichern wollte, habe ich folgende Codes in meinem Archiv entdeckt:

Code:
Sub daten_vom_server()
  'Dateien vom Server lokal speichern
  Dim objShell As Object, fso As Object
  Dim oLokal As Object, oFTP As Object
  Dim sLokal As Variant, sFTP As String
  Dim sUser As String, sPasswort As String
  sLokal = "C:\Temp\FTP" 'anpassen
  sFTP = "ksv-gifhorn.de/dateien/2018-KM" 'anpassen
  sUser = "Benutzername" 'anpassen
  sPasswort = "Passwort" 'anpassen
  Set objShell = CreateObject("Shell.Application")
  Set fso = CreateObject("Scripting.FileSystemObject")
  fso.DeleteFolder sLokal, 1
  fso.CreateFolder sLokal
  Set oLokal = objShell.Namespace(sLokal)
  Set oFTP = objShell.Namespace("ftp://" & sUser & ":" & sPasswort & "@" & sFTP)
  If Not oFTP Is Nothing Then
    oLokal.CopyHere oFTP.items, 4 + 16
  End If
  Set fso = Nothing
  Set objShell = Nothing
End Sub

#########################

Sub M_snb()
   CreateObject("Shell.Application").Namespace("G:\OF\AA1").CopyHere CreateObject("Shell.Application").Namespace("ftp://username:passwort@snb-vba.eu/domains/snb-vba.eu/public_html/bestanden").Items, 4 + 16
End Sub

Ich habe keinen der beiden Codes getestet, bitte aber um feedback, ob sie hilfreich sind.

mfg
Habe den Code mal angepasst und probiert, aber leider passiert nichts.
Hallo, :19:

die beiden Beispiele sind nun mal für FTP. Wenn Du per SFTP (was eigentlich ein irreführender Begriff ist/sein kann) arbeitest und Du möchtest dir die Arbeit vereinfachen, solltest Du dich mit dem von mir gezeigten Link auseinandersetzen. :21:
Hallo,

die Frage hat mich motiviert in CMD den Aufruf "sftp" zu testen: Treffer

Ob man das per VBA ansteuern kann, weiß ich zwar nicht, aber vielleicht kann ein Könner einen Tipp geben.

mfg

(Dass in CMD "ftp" enthalten ist, dürfte bekannt sein.)
Hallöchen,

ich muss mich demnächst auch mit dem Thema beschäftigen. In dem Zusammenhang mal ein Hinweis zu #2 und #3 - cURL ist seit diesem Jahr in W10 enthalten und braucht nicht gesondert von der Seite geholt und installiert zu werden.
Siehe curl -help