⑴ 怎樣用vba實現文件上傳到ftp服務中
VBA訪問FTP進行文件傳輸的,網路上見到3種方式,用過2種。
一、VBA+DOS批處理的方式,本質上還是通過DOS來進行,有點麻煩,而且運行中會彈出CMD窗口,現在已經不用這種方法了。
VBA寫DOS:
OpengetfdForOutputAs#1
Print#1,""
Print#1,"("
Print#1,"echo;openxx.xx.xx.xx"
Print#1,"echo;user"
Print#1,"echo;pwd"
Print#1,"echo;cd""";ftpfdx8;""""
Print#1,"echo;prompt"
Print#1,"echo;dir"
Print#1,"echo;bye"
Print#1,")>""";fdx8;""""
Print#1,
Print#1,"ftp-v-i-s:""";fdx8;"""|find""ftpgroup"">""";folderx8;""""
Print#1,
VBA運行它:
Shell("ftp-v-i-s:"&ftpfile)
二、VBA調用API,具體是basp21.dll
詳見http://www.hi-ho.ne.jp/babaq/eng/basp21f.html,說明很詳細,有實例
示例如下,比較簡單易懂,其中getfile為下載,上傳使用putfile就好了。
PrivateSubForm_Load()
DimftpAsObject,rcAsLong,vAsVariant,v2AsVariant
DimctrAsLong
Setftp=CreateObject("basp21.FTP")
ftp.OpenLog"c: emplog.txt"
rc=ftp.Connect("ftp.microsoft.com","anonymous","")
Ifrc=0Then
v=ftp.GetDir("bussys/winnt/winnt-public",2)
IfIsArray(v)Then
ForEachv2Inv
Debug.Printv2
Next
EndIf
v=ftp.GetDir("bussys/winnt/winnt-public")
IfIsArray(v)Then
ForEachv2Inv
Debug.Printv2
Next
EndIf
rc=ftp.GetFile("bussys/winnt/winnt-public/*","c: emp")
EndIf
End
EndSub
⑵ VBA如何訪問ftp路徑的文件
需要先判斷該文件是否存在。
VBA是到一個ftp伺服器上打開指定的文件,但是需要先判斷該文件是否存在,在那個cFTP的類中找到一段代碼。