2016-10-13 8 views
0

Ich habe versucht, den folgenden Code zu verwenden, den ich in a previous SO Frage gefunden habe, um eine generierte .php-Datei auf meinen freigegebenen Server per FTP hochzuladen.Hochladen über SFTP mit Excel VBA-Code

Ich verwende Excel 2016 unter Windows 10 und versuche, auf einen Server mit 1and1 hochzuladen.

Public Sub FtpSend() 

Dim vPath As String 
Dim vFile As String 
Dim vFTPServ As String 
Dim lInt_FreeFile01 As Integer 

vPath = Environ("USERPROFILE") & "\Documents\UploadFiles\" 
vFile = "rd1.php" 
vFTPServ = "domain-name.co.uk" 

lInt_FreeFile01 = FreeFile 

'Mounting file command for ftp.exe 
Open vPath & "\FtpComm.txt" For Output As #lInt_FreeFile01 
    Print #lInt_FreeFile01, "domain-name.co.uk" 
    Print #lInt_FreeFile01, "username" 
    Print #lInt_FreeFile01, "password" 
    Print #lInt_FreeFile01, "/test/" 
    Print #lInt_FreeFile01, "ascii" 
    Print #lInt_FreeFile01, "send " & Environ("USERPROFILE") & "\Documents\UploadFiles\" & "rd1.php" 

    Print #lInt_FreeFile01, "bye" 

Close #lInt_FreeFile01 

Shell "ftp -n -i -g -s:" & vPath & "FtpComm.txt " & vFTPServ, vbNormalNoFocus 

SetAttr vPath & "FtpComm.txt", vbNormal 
Kill vPath & "\FtpComm.txt" 

End Sub 

Wenn ich das Makro auszuführen, gibt es keine Rückmeldung darüber, was passiert ist, aber die Datei nicht übertragen wurde in das/test/Verzeichnis auf dem Server. Ich habe einige Permutationen ausprobiert, aber ich kann es nicht zur Arbeit bringen.

Irgendwelche Ratschläge, wie ich das zum Funktionieren bringen kann?

Auf einer anderen Anmerkung, ich habe auch versucht, den Code here, konnte aber nicht diese entweder an die Arbeit ...

ich FileZilla zuvor verwendet haben, Dateien per FTP zu übertragen, aber diese Excel-Arbeitsmappe sein wird, Die Möglichkeit, Excel-VBA-Code hochzuladen, ist ein wichtiger Teil der Rationalisierung des Workflows.

Antwort

0

Ändern Sie diese Zeile

Print #lInt_FreeFile01, "/test/" 

zu

Print #lInt_FreeFile01, "cd test" 

oder vielleicht

Print #lInt_FreeFile01, "cd /test" 

Wenn Sie das Active Directory in Bezug auf root einstellen müssen.

Wenn das nicht funktioniert, dann ist das Problem in dem Weg von dem Sie kopieren:

Environ("USERPROFILE") & "\Documents\UploadFiles\" & "rd1.php" 

, weil der Rest der Datei FTP-Befehle legit aussieht.

+0

Einige Änderungen vorgenommen, einschließlich Ändern des Verzeichnispfads und Ihrer anderen Vorschläge, aber es funktioniert immer noch nicht. Der Bildschirm flackert kurz, aber es gibt keine andere Rückmeldung und wenn ich das Verzeichnis auf dem Server überprüfe, wurde die Datei nicht übertragen. Hat dieser Code früher für Sie funktioniert? –

+0

Ist es wahrscheinlich ein Unterschied, dass ich SFTP anstelle von FTP verwende, und wenn ja, kann ich dies im Code angeben? –

+0

sFTP macht einen großen Unterschied. Windows führt sFTP nicht nativ aus. Sie müssen WinSCP oder PuTTY verwenden. – Tim