EXCEL執行FTP指令上傳與下載

日前台指期會員服務案子的工作記錄:操作者利用excel dde接收即時報價源,並透過設計好的運算式與變數,產生多空訊號,並每分鐘把這多空訊號及K線資料上傳至一主機供會員參考使用。
EXCEL執行FTP指令上傳與下載

部份代碼記錄如下:

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的功能

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *