使用Excel VBA代码通过SFTP上传

时间:2016-10-13 20:19:09

标签: php excel vba excel-vba ftp

我尝试使用以下代码(我在a previous SO问题中找到)将生成的.php文件通过FTP上传到我的共享服务器。

我在Windows 10上使用Excel 2016,并尝试使用1and1上传到服务器。

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

当我运行宏时,没有关于发生了什么的反馈,但该文件尚未传输到服务器上的/ test /目录中。我尝试过多种排列,但我无法让它发挥作用。

关于如何让它发挥作用的任何建议?

另一方面,我也尝试了代码here,但无法使其工作......

我之前使用FileZilla通过FTP传输文件,但是这个Excel工作簿将分发给许多团队成员,并且使用Excel VBA代码上传的能力是简化工作流程的重要部分。

1 个答案:

答案 0 :(得分:0)

更改此行

Print #lInt_FreeFile01, "/test/"

Print #lInt_FreeFile01, "cd test"

或者

Print #lInt_FreeFile01, "cd /test"

如果需要相对于root设置活动目录。

如果这不起作用,那么您的问题就在您复制的路径中:

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

因为您的FTP命令文件的其余部分看起来合法。