Dateien per FTP in Excel speichern
Schritt-für-Schritt-Anleitung
Um eine Datei über FTP in Excel zu speichern, kannst du den folgenden VBA-Code verwenden. Dieser Code verbindet sich mit einem FTP-Server und lädt eine Excel-Datei hoch.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu (
Einfügen
> Modul
).
- Kopiere den folgenden Code und füge ihn in das Modul ein:
Option Explicit
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
Sub UploadToFTP()
Dim hOpen As Long, hConnection As Long
Dim strServer As String, strUsername As String, strPassword As String
Dim strLocalFile As String, strRemoteFile As String
Dim result As Long
strServer = "ftp.deinserver.de" ' Ersetze dies mit deinem Server
strUsername = "DeinBenutzername" ' Ersetze dies mit deinem Benutzernamen
strPassword = "DeinPasswort" ' Ersetze dies mit deinem Passwort
strLocalFile = "C:\Pfad\zu\deiner\Datei.xls" ' Lokale Datei
strRemoteFile = "Datei.xls" ' Name auf dem Server
hOpen = InternetOpen("FTP", 1, vbNullString, vbNullString, 0)
hConnection = InternetConnect(hOpen, strServer, 0, strUsername, strPassword, 1, 0, 0)
If hConnection <> 0 Then
result = FtpPutFile(hConnection, strLocalFile, strRemoteFile, 0, 0)
If result = 0 Then
MsgBox "Upload fehlgeschlagen!"
Else
MsgBox "Upload erfolgreich!"
End If
Else
MsgBox "Keine Verbindung zum Server!"
End If
If hConnection <> 0 Then InternetCloseHandle(hConnection)
If hOpen <> 0 Then InternetCloseHandle(hOpen)
End Sub
- Passe die Variablen
strServer
, strUsername
, strPassword
, strLocalFile
und strRemoteFile
an deine Bedürfnisse an.
- Führe die Subroutine
UploadToFTP
aus, um die Datei hochzuladen.
Häufige Fehler und Lösungen
-
Fehler: "Keine Verbindung zum Server!"
- Überprüfe, ob die Serverdaten korrekt sind. Der Servername sollte nicht mit
ftp://
beginnen.
-
Fehler: "Upload fehlgeschlagen!"
- Stelle sicher, dass die lokale Datei existiert und der Pfad korrekt ist.
-
Fehler: "Download fehlgeschlagen!"
- Überprüfe, ob die Datei auf dem Server vorhanden ist, falls du auch Downloads implementieren möchtest.
Alternative Methoden
Eine andere Möglichkeit, um Dateien auf einen FTP-Server zu speichern, ist die Verwendung von FTP-Clients oder -Tools wie FileZilla. Diese bieten eine benutzerfreundliche Oberfläche und benötigen kein Programmieren mit VBA.
Praktische Beispiele
Hier ist ein Beispiel, wie du den Code anpassen kannst, um mehrere Dateien hochzuladen:
Sub MultiUploadToFTP()
Dim files As Variant
Dim i As Integer
files = Array("C:\Pfad\zu\Datei1.xls", "C:\Pfad\zu\Datei2.xls") ' Liste der Dateien
For i = LBound(files) To UBound(files)
' Führe hier den Upload-Befehl für jede Datei aus
' Du kannst den UploadToFTP Code hier einfügen und anpassen
Next i
End Sub
Tipps für Profis
- Verwende
FTP_TRANSFER_TYPE_BINARY
, wenn du Binärdateien hochladen möchtest.
- Achte darauf, die Firewall-Einstellungen zu überprüfen, um sicherzustellen, dass sie FTP-Verbindungen nicht blockieren.
- Teste den Code immer zuerst mit einer kleinen Datei, um sicherzustellen, dass die Verbindung funktioniert.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass meine Verbindung zum FTP-Server sicher ist?
Für eine sichere Verbindung solltest du SFTP (SSH File Transfer Protocol) in Betracht ziehen. VBA unterstützt dies jedoch nicht nativ, und du müsstest eine zusätzliche Bibliothek verwenden.
2. Muss ich den Code jedes Mal anpassen, wenn ich eine andere Datei hochladen möchte?
Du kannst den Dateinamen in der Subroutine dynamisch gestalten, indem du Benutzereingaben verwendest oder den Dateinamen aus einer Zelle in Excel holst.
3. Welche Excel-Version benötige ich für diesen VBA-Code?
Der Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und später) funktionieren, die VBA unterstützen.