我有一个特定的VBA代码,即FTPs文件到某个位置。FTP代码无法在客户端PC上工作
Function SendFtpFile_F(csvPath As Variant) As Boolean
Dim rc As Integer
Dim iFreeFile As Integer
Dim sFTPUserID As String
Dim sFTPPassWord As String
Dim sWorkingDirectory As String
Dim sFileToSend As String
Const FTP_BATCH_FILE_NAME = "myFtpFile.ftp"
Const INCREASED_BUFFER_SIZE = 20480
fsheetname = ActiveSheet.Name
Select Case fsheetname
Case "Price Change"
flocation = "price_change"
Case "New SKU"
flocation = "new_sku"
Case "SKU Change"
flocation = "sku_change"
Case "Discontinuation"
flocation = "sku_deletion"
End Select
SendFtpFile_F = False
'csvPath = "C:\Users\10613527\Desktop\test\"
csvPath = csvPath + "\"
sWorkingDirectory = csvPath
sFileToSend = Namex
On Error GoTo FtpNECAFile_EH
'Kill FTP process file if it exists
If Dir(sWorkingDirectory & FTP_BATCH_FILE_NAME) <> "" Then
Kill sWorkingDirectory & FTP_BATCH_FILE_NAME
End If
'Create FTP process file
iFreeFile = FreeFile
Open sWorkingDirectory & FTP_BATCH_FILE_NAME For Output As #iFreeFile
Print #iFreeFile, "open " & FTP_ADDRESS
Print #iFreeFile, FTP_USERID
Print #iFreeFile, FTP_PASSWORD
Print #iFreeFile, "ASCII"
Print #iFreeFile, "CD " & flocation
Print #iFreeFile, "put """ & sWorkingDirectory & sFileToSend & """"
Print #iFreeFile, "bye"
Close #iFreeFile
'Shell command the FTP file to the server
Shell "ftp -i -w:20480 -s:" & sWorkingDirectory & FTP_BATCH_FILE_NAME
SendFtpFile_F = True
GoTo FtpNECAFile_EX
FtpNECAFile_EH:
MsgBox "Err", Err.Name
FtpNECAFile_EX:
Exit Function
End Function
此代码完全适用于我的机器,但FTP部分在我的客户机器中不起作用。
观察:当我不打印“再见”命令,然后在我的电脑上运行该代码,我可以看到一个命令行弹出显示成功转让,但同样没有在我的客户端PC发生。 cmd窗口甚至没有打开,我注意到FTP的批处理文件写得完全没有问题。请帮忙。
尝试设置ftp.exe的完整路径。添加诸如'> c:\ temp \ error.log'之类的东西可能会存储ftp.exe打印的任何错误消息以供以后查看。 – Marged
@Marged它写入文件,创建它,我不知道如果我通过“设置完整路径”得到你的意思谢谢 – Anarach
@Anarach,Windows FTP.exe文件存在的完整路径。几年前,我发生过这种情况,我们的计算机上安装了第三方ftp程序,当我的代码执行时,它首先从第三方程序中找到了ftp.exe,因为它在PATH变量中更高。 – Squashman