VBA本身实现ftp的文件传输操作比较复杂,但是可以很方便的调用cmd命令窗口来执行shell命令,也就是调用cmd的小黑框。这对需要远程操作数据十分有用。
我们在vb编辑器里输入如下代码:
Sub ftp()
Dim env_addr, env_user, env_passwd, localftp, ftpfile, cfgfile As String
env_addr = "192.168.1.112"
env_user = "root"
env_passwd = "root"
localftp = "D:\ftp"
ftpfile = "/etc/passwd"
cfgfile = "D:\ftp\config.txt"
If dir(ftpfile) <> Empty Then
MsgBox "文件已成功下载"
Exit Sub
End If
Open cfgfile For Output As #1
Print #1, "open" & env_addr
Print #1, env_user
Print #1, env_passwd
Print #1, "lcd " & localftp
Print #1, "bin"
Print #1, "prompt"
Print #1, "get " & ftpfile
Print #1, "bye"
Close #1
Shell "ftp -s:" & cfgfile, windowstyle:=vbHide
End Sub
中间一段Open ... For Output
是vba的文件操作 ,目的是创建一个ftp可以直接调用的命令集,在命令行窗口调用ftp -s: 文件名
即可成功调用该命令集,从而实现我们需要的功能。
最后一行的windowstyle:=vbHide
是为了把命令行的那个小黑框隐藏掉,要不然每次执行都弹出一个小黑框很影响美观。
如此,上述功能就算完成了 。当然,前提是你的远程服务器需要启动了ftp服务,否则肯定连接都连接不上。
如果正确执行,会在D:\ftp目录下生成一个配置文件:
这个文件里的内容其实就是一堆ftp命令集,执行该命令集和直接在命令行窗口操作是 一模一样的,所以也就无需赘述了。
只要配置正确,就能顺利从远端获取到我们所需要的文件。