VBA中的FTP被PUT卡住了

时间:2019-05-25 21:27:58

标签: vba ftp

我在D盘上创建了一个测试文件。我的目标是从Excel中的VBA脚本将其上传到我的网站。当我运行.bat文件时,它将在放置期间挂起。我究竟做错了什么?我注释掉了/行,因为那给了我一个错误。

在命令提示符下运行upload.bat时进行回复

D:\>upload.bat

D:\>ftp -i -s:d:\script.dat domain.com
Connected to domain.com.
220 *** FTP Server Ready
200 UTF8 set to on
User (domain.com:(none)):
331 Password required for username

230 User username logged in
ftp> put d:\test.txt
200 PORT command successful
425 Unable to build data connection: Connection timed out
ftp> quit
221 Goodbye.
enter code here

Sub ftp()

Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("d:\script.dat", True)
    a.writeline "username" 'username
    a.writeline "password" 'password
    'a.writeline "\" 'directory on FTP site
    a.writeline "put d:\test.txt" 'file to be uploaded
    a.writeline "quit"
    a.Close

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("d:\upload.bat", True)
    a.writeline "ftp -i -s:d:\script.dat domain.com" 'the ftp site
    a.Close

    dRetVal = Shell("d:\upload.bat", 0) 'upload the file

    Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:1)

  

200 PORT命令成功
  425无法建立数据连接:连接超时

通常会发生这种情况,如果您位于某些防火墙或执行NAT的设备(即典型的SoHo路由器)后面。 FTP需要进行分离数据连接,并且在活动模式下(如您在此处使用),服务器尝试连接到客户端-在给定的情况下,由于连接重置或超时(如您的情况),填充失败。 >

您最好使用被动模式,在该模式下,客户端将尝试连接到服务器以进行数据连接。不幸的是,Windows does not seem to support passive mode中的内置命令行客户端,因此您需要使用其他客户端。