EXCEL執行FTP指令上傳與下載
日前台指期會員服務案子的工作記錄:操作者利用excel dde接收即時報價源,並透過設計好的運算式與變數,產生多空訊號,並每分鐘把這多空訊號及K線資料上傳至一主機供會員參考使用。
部份代碼記錄如下:
Private Sub Test1() '計算DDE分線資料 '訊號運算式 '產生記錄檔 '...等等等 Call Test2 '執行記錄檔FTP上傳 End Sub Private Sub Test2() Set LV1 = CreateObject("Scripting.FileSystemObject") Set LV2 = LV1.OpenTextFile("c:\\stockftp.txt", 2, True) '建立上傳資料描述檔stockftp.txt LV2.writeline "testtest" '登入帳號 LV2.writeline "testtest" '登入密碼 LV2.writeline "cd www/stock" '切換上傳目錄 LV2.writeline "put c:\\stocklog_201001xx.txt" '指定當日上傳檔案 LV2.writeline "quit" LV2.Close Set LV2 = Nothing Set LV1 = Nothing Shell ("ftp -s:c:\\stockftp.txt testtest.tw") '執行ftp並登入testtest.tw主機 End Sub
後記:
上述作法是利用Dos的command執行微軟內建的ftp公用程式,選擇使用它的主要原因是會新建執行緒去上傳,這樣就不會阻礙到DDE即時資料的抓取
測試使用VB物件InetCtls.Inet也可以完成上述工作,但由於excel僅在單執行緒運行,所以在資料未完成上傳前,就沒法進行其它工作
參考文:FTP from within excel VBA | INET problem in VB6. No Error but no Upload Problem!!! | MakeIT: 利用wininet.dll來做FTP的功能