VBA实现FTP上传文件的两种方式:①shell cmd命令②vba调用vb.net(传参并获取返回值)
本文想要上传文件夹内 特定文件名(Excel单元框内手动输入文件名)的文件。vb.net实现FTP文件的上传,代码简单,但vba需要调用所生成的exe文件 实现参数的传递并获取exe的返回值。但在用单纯的vba代码实现FTP文件上传的时候发现,。
如图⬇
方式1:单纯vba代码→shell cmd命令
vba需要①添加新的控件或者是②直接调用cmd命令,问题多多略显鸡肋。
①添加新的控件→需要自行下载控件而放弃,未作尝试。
②直接调用cmd命令→需要关闭ftp的防火墙,手动进入被动模式(literal pasv)。因环境而异尝试之后有点电脑可有的电脑则无法执行up语句。vba代码仅供参考:
Dim creatDate, fileName, FILE_DIR,localFileName As String
Dim localFilePathName,batfile As String
Dim FtpSevr,FtpUser,FtpPw,FtpPATH As String
creatDate = Trim(Worksheets(strSheetNM).Cells(4, 3))
fileName = Trim(Worksheets(strSheetNM).Cells(5, 3))
FILE_DIR = "D:\ftpjp\" '本地文件路径
FtpSevr = "**********" 'Ftp名称
FtpUser = "**********" 'Ftp用户名
FtpPw = "**********" 'Ftp密码
FtpPATH = "**********" 'Ftp上存放uploa的文件夹名
'如果本地文件路径D:\ftpjp\中存在文件名含有fileName的xml类型的文件
If Dir(FILE_DIR & creatDate & "\" & "*" & fileName & "*.xml<