Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

SFTP Datenzugriff
#1
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.
Grüße Mario  Angel
Antworten Top
#2
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!
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#3
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
Antworten Top
#4
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.
Grüße Mario  Angel
Antworten Top
#5
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:
________
Servus
Case
Antworten Top
#6
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
Antworten Top
#7
Habe den Code mal angepasst und probiert, aber leider passiert nichts.
Grüße Mario  Angel
Antworten Top
#8
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:
________
Servus
Case
Antworten Top
#9
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.)
Antworten Top
#10
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste