Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

auf FTP-Server Speichern

auf FTP-Server Speichern
Axel
Hallo Ihr Lieben, ich möchte eine Datei auf meinem eigenem Server speichern.
Also den Button kann ich erstellen aber wie kann ich das machen das immer per FTP gespeichert wird.
ftp:\\bla.de\excel
oder so ähnlich? Ich muß mit dieser Datei in 2 Geschäften arbeiten und möchte die nicht immer hin und her schleppen.
Danke für eure Hilfe...
Axel
Server als Laufwerksbuchstaben (Frage offen)
08.06.2010 11:14:48
Tino
Hallo,
Du kannst den Server als Laufwerksbuchstaben einbinden und dann normal auf diesen speichern.
Ich lass mal offen.
Gruß Tino
AW: Server als Laufwerksbuchstaben (Frage offen)
08.06.2010 11:29:50
Axel
Danke, das wäre eine Möglichkeit ich hätte das ja lieber als Button:
So ähnlich w.u. aber der Code geht nicht.
Private Sub CommandButton1_Click()
ActiveWorkbook.SaveAs Filename:="ftp://bla.de/excel/51.xls",
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
Axel
eine Variante ist die...
08.06.2010 12:03:14
Tino
Hallo,
diesen Code habe ich bei VB6 gefunden und auch für bestimmte Zwecke im Einsatz.
Habe Ihn mal etwas auf Excel VBA umgebaut und auf meiner HP getestet.
Option Explicit

' 2001 by Thomas Rodemer 

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 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 InternetCloseHandle Lib "wininet.dll" _
        (ByVal hInet As Long) As Integer

Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" _
        Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long
        
Private Declare Function FtpFindFirstFile Lib "wininet.dll" _
        Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, _
        ByVal lpszSearchFile As String, lpFindFileData As _
        WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent _
        As Long) As Long
        
Private Declare Function InternetFindNextFile Lib "wininet.dll" _
        Alias "InternetFindNextFileA" (ByVal hFind As Long, _
        lpvFindData As WIN32_FIND_DATA) As Long

Private Declare Function FtpGetFile Lib "wininet.dll" Alias _
        "FtpGetFileA" (ByVal hFtpSession As Long, ByVal _
        lpszRemoteFile As String, ByVal lpszNewFile As String, _
        ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes _
        As Long, ByVal dwFlags As Long, ByVal dwContext 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 FtpDeleteFile Lib "wininet.dll" _
        Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _
        ByVal lpszFileName As String) As Long

Private Declare Function FtpRenameFile Lib "wininet.dll" _
        Alias "FtpRenameFileA" (ByVal hFtpSession As Long, _
        ByVal lpszFromFileName As String, ByVal lpszToFileName _
        As String) As Long
        
Private Declare Function FtpCreateDirectory Lib "wininet" _
        Alias "FtpCreateDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long

Private Declare Function FtpRemoveDirectory Lib "wininet" _
        Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long

Private Declare Function InternetGetLastResponseInfo Lib _
        "wininet.dll" Alias "InternetGetLastResponseInfoA" _
        (lpdwError As Long, ByVal lpszBuffer As String, _
        lpdwBufferLength As Long) As Long
    
Const ERROR_NO_MORE_FILES = 18
Const ERROR_INTERNET_EXTENDED_ERROR = 12003

Const FTP_TRANSFER_TYPE_BINARY = &H0
Const FTP_TRANSFER_TYPE_ASCII = &H1

Const INTERNET_FLAG_PASSIVE = &H8000000
Const INTERNET_FLAG_RELOAD = &H80000000
Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Const INTERNET_FLAG_MULTIPART = &H200000

Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3

Const INTERNET_INVALID_PORT_NUMBER = 0

Const INTERNET_SERVICE_FTP = 1
Const INTERNET_SERVICE_GOPHER = 2
Const INTERNET_SERVICE_HTTP = 3

Private Declare Function FileTimeToSystemTime Lib "kernel32" _
        (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) _
        As Long

Const MAX_PATH = 260
Const NO_ERROR = 0
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_TEMPORARY = &H100
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Const FILE_ATTRIBUTE_OFFLINE = &H1000


Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
  dwFileAttributes As Long
  ftCreationTime As FILETIME
  ftLastAccessTime As FILETIME
  ftLastWriteTime As FILETIME
  nFileSizeHigh As Long
  nFileSizeLow As Long
  dwReserved0 As Long
  dwReserved1 As Long
  cFileName As String * MAX_PATH
  cAlternate As String * 14
End Type
Dim Verbundenoderwas As Boolean
        
Private Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type


Private Sub Command1_Click()
Dim nFlag As Long, hOpen As Long, hConnection As Long
Dim Result&
Dim strPath$, strDateiName$
Dim strUsername$, strPasswort$, strServer$, strSubDir$

strServer = "ftp.deinserver.de" 'Dein Server 
strUsername$ = "UserName"       'Dein User Name 
strPasswort = "Passwort"        'Dein Passwort 
strSubDir$ = "UnterOrdner"      'Unterordner 

'Pfad für Dateien? 
strPath$ = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
'Datei Name? 
strDateiName$ = "Meine Datei.xls"

hOpen = InternetOpen("FTP", 1, vbNullString, vbNullString, 0)
If hOpen = 0 Then
MsgBox ("Es konnte keine Verbindung hergestellt werden!")
Exit Sub
End If
'Hier alle Angaben zum User deinen Bedürfnissen anpassen 
hConnection = InternetConnect(hOpen, strServer, 0, strUsername, strPasswort, 1, nFlag, 0)

'Eventuelles wechseln in ein Subdir: 
 Result = FtpSetCurrentDirectory(hConnection, strSubDir$)

'Download einer File: 
 Result = FtpGetFile(hConnection, "Dateiname.xls", strPath$ & strDateiName$, False, &H0, &H0, 0)

'Upload einer File: 
 Result = FtpPutFile(hConnection, strPath$ & strDateiName$, strDateiName$, &H0, 0)

'Trennen der Verbindung: 
If hConnection <> 0 Then InternetCloseHandle (hConnection)
If hOpen <> 0 Then InternetCloseHandle (hOpen)

End Sub
Gruß Tino
Anzeige
AW: eine Variante ist die...
08.06.2010 12:41:02
Axel
Das wäre echt das gewesen aber geht leider nicht!
Geht es bei dir denn?
Axel
Ja bei mir funktioniert es... (Frage offen)
08.06.2010 13:20:55
Tino
Hallo,
kann Dir aber meine Serverdaten nicht zur Verfügung stellen ;-)
Ich lass mal offen, bin jetzt nicht mehr online.
Gruß Tino
was geht nicht?
09.06.2010 09:13:25
Tino
Hallo,
also den Download brauchst Du nicht, Du willst ja speicher.
Hast Du Deine Daten angepasst?
Hast Du Pfad und Datei an Deine Umgebung angepasst?
Private Sub Command1_Click()
Dim nFlag As Long, hOpen As Long, hConnection As Long
Dim Result&
Dim strPath$, strDateiName$
Dim strUsername$, strPasswort$, strServer$, strSubDir$

strServer = "ftp.deinserver.de" 'Dein Server 
strUsername$ = "UserName"       'Dein User Name 
strPasswort = "Passwort"        'Dein Passwort 
strSubDir$ = "UnterOrdner"      'Unterordner 

'Pfad für Dateien? 
strPath$ = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
'Datei Name? 
strDateiName$ = "Meine Datei.xls"

hOpen = InternetOpen("FTP", 1, vbNullString, vbNullString, 0)
If hOpen = 0 Then
MsgBox ("Es konnte keine Verbindung hergestellt werden!")
Exit Sub
End If

'Hier alle Angaben zum User deinen Bedürfnissen anpassen 
hConnection = InternetConnect(hOpen, strServer, 0, strUsername, strPasswort, 1, nFlag, 0)

'Eventuelles wechseln in ein Subdir: 
 Result = FtpSetCurrentDirectory(hConnection, strSubDir$)

''Download einer File: 
' Result = FtpGetFile(hConnection, strDateiName$, strPath$ & strDateiName$, False, &H0, &H0, 0) 

'Upload einer File: 
 Result = FtpPutFile(hConnection, strPath$ & strDateiName$, strDateiName$, &H0, 0)

'Trennen der Verbindung: 
If hConnection <> 0 Then InternetCloseHandle (hConnection)
If hOpen <> 0 Then InternetCloseHandle (hOpen)

End Sub
Gruß Tino
Anzeige
AW: auf FTP-Server Speichern
09.06.2010 09:54:13
Axel
Hi Tino, also ich häng die datei mal an, hab passwort rausgenommen.
Kann sein das ich was falsch gemacht habe?
Danke schon mal
https://www.herber.de/bbs/user/69967.xlsm
AW: auf FTP-Server Speichern
09.06.2010 11:14:55
Tino
Hallo,
kann so keinen Fehler feststellen.
Ist vielleicht html ein Unterordner?
https://www.herber.de/bbs/user/69971.xlsm
Sonst kann ich Dir auch nicht weiter helfen.
Gruß Tino
AW: auf FTP-Server Speichern (Tino)
09.06.2010 18:50:48
Axel
Hi, jetzt sagt er auf jedenfall schonmal:
Download und upload fehlgeschlagen. Das hatte er vorher auch nicht.
Ich bin mir sicher das das geht aber das ist noch was falsch.
magst du mir privat schreiben. wegen zugangsdaten?
Evtl. Firewall?
office(at)metzhair.de
Danke dir schon mal
Anzeige
AW: auf FTP-Server Speichern (Tino)
10.06.2010 10:21:28
Rainer
Hallo Axel,
da mich der Code auch interessierte habe ich es einfach mal bei mir getestet.
Upload hat funktioniert.
Der string für den Servernamen darf jedoch nicht mit ftp://deinServer.de sein sondern darf nur einen . haben:
strServer = "ftp.metzhair.de"
Der Download wollte bei mir dann allerdings nicht.
Allerdings, so wie Du den DownloadCode abgeändert hast, hat es bei mir dann meine Beispieldatei im Verzeichnis gelöscht und war nirgendswo mehr aufzufinden.
Gruß Rainer
wie macht Ihr es mit FTP Programm.
10.06.2010 10:37:17
Tino
Hallo,
bei mir fängt der Servername mit www. an.
Wie macht Ihr es den mit einem FTP Programm, wie nennen sich da die Serverdaten.
Bei 'Download einer File:' muss die Datei auf dem Server vorhanden sein. (in strPath$)
Bei 'Upload einer File:' muss die Datei auf dem Rechner vorhanden sein. (in strPath$)
'strPath$' ist der Ordner wo sich die Exceldatei befindet.
Gruß Tino
Anzeige
AW: wie macht Ihr es mit FTP Programm.
10.06.2010 21:02:51
Axel
Hi, also bei mir funkt das noch nicht, kommt immer "Server nicht gefunden",
ich wende mich mal an meinen Serveradmin vielleicht weiß der Rat.
Ich meld mich
Danke euch schon mal
Code zusammengestaucht
10.06.2010 11:30:06
Tino
Hallo,
habe den Code nochmal auf das nötigste zusammengestaucht, vielleicht klappt es so besser bei Euch.
Habe auch noch mehr Meldungen eingebaut.
Option Explicit

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 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 InternetCloseHandle Lib "wininet.dll" _
        (ByVal hInet As Long) As Integer

Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" _
        Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long
        
Private Declare Function FtpGetFile Lib "wininet.dll" Alias _
        "FtpGetFileA" (ByVal hFtpSession As Long, ByVal _
        lpszRemoteFile As String, ByVal lpszNewFile As String, _
        ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes _
        As Long, ByVal dwFlags As Long, ByVal dwContext 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 Enum TRANSFER
 FTP_TRANSFER_TYPE_BINARY = &H0
 FTP_TRANSFER_TYPE_ASCII = &H1
End Enum

Private Enum INTERNET_SERVICE
 INTERNET_SERVICE_FTP = 1
 INTERNET_SERVICE_GOPHER = 2
 INTERNET_SERVICE_HTTP = 3
End Enum

Private Const INTERNET_INVALID_PORT_NUMBER As Integer = 0

Private Sub Schaltfläche1_Klicken()
Dim nFlag As Long, hOpen As Long, hConnection As Long
Dim Result&
Dim strPath$, strDateiName$
Dim strUsername$, strPasswort$, strServer$, strSubDir$

strServer = "www.vba-excel.de"  'Dein Server 
strUsername$ = "Dein-Username"  'Dein User Name 
strPasswort = "Passwort"        'Dein Passwort 
strSubDir$ = "wsb_Test"         'Unterordner oder leer lassen 

'Pfad für Dateien? 
strPath$ = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")


hOpen = InternetOpen("FTP", 1, vbNullString, vbNullString, 0)
If hOpen = 0 Then
    MsgBox ("Es konnte keine Verbindung hergestellt werden!")
    Exit Sub
End If

'Hier alle Angaben zum User deinen Bedürfnissen anpassen 
hConnection = InternetConnect(hOpen, strServer, _
                                INTERNET_INVALID_PORT_NUMBER, strUsername, strPasswort, _
                                INTERNET_SERVICE.INTERNET_SERVICE_FTP, nFlag, 0)

If hConnection = 0 Then
    MsgBox "Keine Verbindung zum Server"
    GoTo Keine_Vernindung:
End If

'Eventuelles wechseln in ein Subdir: 
If strSubDir <> "" Then
     Result = FtpSetCurrentDirectory(hConnection, strSubDir$)
    If Result = 0 Then
        MsgBox "Unterordner nicht gefunden oder Zugriff verweigert"
        GoTo Keine_Vernindung:
    End If
End If

'_______________________________________________________________________________
 
'Datei Name? ******************************************************************* 
 strDateiName$ = "030312_1867_5662_xslp_small.gif"

'Download einer File: 
 Result = _
 FtpGetFile(hConnection, strDateiName$, strPath$ & strDateiName$, False, &H0, TRANSFER.FTP_TRANSFER_TYPE_BINARY, 0)
 If Result = 0 Then MsgBox "Download fehlgeschlagen!"
 
'_______________________________________________________________________________
 
'Datei Name? ******************************************************************* 
 strDateiName$ = "EineTestDatei.xls"

'Upload einer File: 
 Result = _
 FtpPutFile(hConnection, strPath$ & strDateiName$, strDateiName$, TRANSFER.FTP_TRANSFER_TYPE_BINARY, 0)
 If Result = 0 Then MsgBox "Upload fehlgeschlagen!"
'_______________________________________________________________________________
 

Keine_Vernindung:
'Trennen der Verbindung: 
If hConnection <> 0 Then InternetCloseHandle (hConnection)
If hOpen <> 0 Then InternetCloseHandle (hOpen)

End Sub
Gruß Tino
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige