需要从 Excel VBA 将文件 (file.txt) 上传到服务器 (ftp.server.com)。 (不一定是 FTP,只需能够将文件放在那里并取回,我在 GoDaddy 共享主机上有一个服务器)
我尝试的是运行这个脚本:
ftp -s:script.txt
脚本.txt:
open ftp.server.com
USER
PASS
lcd c:\
put file.txt
disconnect
bye
我得到的错误是:
425 Could not open data connection to port 53637: Connection timed out
Google 告诉我需要进入被动模式,但命令行 ftp.exe
客户端不允许这样做。
我是否有更简单的 FTP 替代方案,或者是否有更好的方法通过 VBA 上传文件(无需命令行解决方法)?
我正在考虑使用 DROPBOX(但我真的不想在所有需要该程序的工作站上安装该程序)。
最佳答案
如果您无法使用 Windows ftp.exe
(特别是因为 it does not support the passive mode 和 TLS/SSL),您可以使用其他命令行 FTP 客户端。
例如使用 WinSCP scripting 上传文件,使用:
Call Shell( _
"C:\path\WinSCP.com /log=C:\path\excel.log /command " & _
"""open ftp://user:password@example.com/"" " & _
"""put C:\path\file.txt /path/"" " & _
"""exit""")
<小时/>
为了方便阅读,上面运行了这些 WinSCP 命令:
open ftp://user:password@example.com/
put C:\path\file.txt /path/
exit
您可以将命令放入脚本文件并使用 /script=
command-line parameter 运行脚本。 ,类似于 ftp -s:
,而不是 /command
。
请参阅 Converting Windows FTP script to WinSCP script 的指南.
您甚至可以拥有WinSCP GUI generate the FTP upload script为你。
<小时/>WinSCP 默认为被动模式。
您还可以使用FTPS (TLS/SSL) :
open ftpes://user:password@example.com/
<小时/>
或者您可以使用WinSCP .NET assembly via COM来自 VBA 代码。
<小时/>(我是 WinSCP 的作者)
关于excel - 从 Excel VBA 通过 FTP 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737691/