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命令集,执行该命令集和直接在命令行窗口操作是 一模一样的,所以也就无需赘述了。
只要配置正确,就能顺利从远端获取到我们所需要的文件。