我尝试使用以下代码(我在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代码上传的能力是简化工作流程的重要部分。
答案 0 :(得分:0)
更改此行
Print #lInt_FreeFile01, "/test/"
到
Print #lInt_FreeFile01, "cd test"
或者
Print #lInt_FreeFile01, "cd /test"
如果需要相对于root设置活动目录。
如果这不起作用,那么您的问题就在您复制的路径中:
Environ("USERPROFILE") & "\Documents\UploadFiles\" & "rd1.php"
因为您的FTP命令文件的其余部分看起来合法。