Работы с FTP сервером, на VBA

Код описывает, обращение к ФТП серверу, и загрузку файлов на него.
Пример использования Здесь
В примере реализовано следующие: Обработка данных на листах,преобразование листов в CSV, отправка их на FTP сервер.
Параметры подключения задаются на специальном административном листе.

Ниже рассмотрен пример кода, отвечающего именно за конект к ФТП серверу.

  1. Sub Sendfile()
  2. ' настройки
  3. Dim address As String
  4. Dim loginn As String
  5. Dim pwdd As String
  6. Dim inidir As String
  7. Dim tardir As String
  8. Dim range As String
  9. Dim Filename As String
  10. Dim FullPath As String
  11. Dim FullPath2 As String
  12. Dim B7CellVAL As String
  13. Dim thiswbfp As String
  14. Dim lLastRow As Long
  15.  
  16. Dim strDirectoryList As String
  17. Dim lStr_Dir As String
  18. Dim lInt_FreeFile01 As Integer
  19. Dim lInt_FreeFile02 As Integer
  20.  
  21. On Error GoTo Err_Handler
  22. lStr_Dir = ThisWorkbook.Path
  23. lInt_FreeFile01 = FreeFile
  24. lInt_FreeFile02 = FreeFile
  25.  
  26. strDirectoryList = lStr_Dir ' директория файла
  27. '' Delete completion file
  28. If Dir(strDirectoryList & ".out") <> "" Then Kill (strDirectoryList & ".out")
  29.  
  30. '' Создаем файл с командами FTP
  31. Open strDirectoryList & ".txt" For Output As #lInt_FreeFile01
  32. Print #lInt_FreeFile01, "open " & address ' aa?ann
  33. Print #lInt_FreeFile01, loginn ' eiaei
  34. Print #lInt_FreeFile01, pwdd ' ia?ieu
  35. Print #lInt_FreeFile01, "cd " & inidir ' ia?aeoe a eaoaeia
  36. Print #lInt_FreeFile01, "binary" ' a ?a?eia
  37. Print #lInt_FreeFile01, "send " & ThisWorkbook.Path & "\" & Filename & " " & tardir & "/" & Filename ' что, откуда и куда
  38.  
  39. '' для получения файла можно использовать следующую строку
  40. ''Print #lInt_FreeFile01, "recv \Picture.gif " & ThisWorkbook.Path & "\Picture.gif"
  41.  
  42. Print #lInt_FreeFile01, "bye"
  43. Close #lInt_FreeFile01
  44.  
  45. '' Создаем виндовый батник, который запустит команды
  46. Open strDirectoryList & ".bat" For Output As #lInt_FreeFile02
  47. Print #lInt_FreeFile02, "ftp -s:" & strDirectoryList & ".txt"
  48.  
  49. Print #lInt_FreeFile02, "Echo ""Complete"" > " & strDirectoryList & ".out"
  50. Close #lInt_FreeFile02
  51.  
  52. '' Invoke Directory List generator
  53. Shell (strDirectoryList & ".bat"), vbHide '', vbMinimizedNoFocus
  54. 'Wait for completion
  55. Do While Dir(strDirectoryList & ".out") = ""
  56. DoEvents
  57. Loop
  58.  
  59. Application.Wait (Now + TimeValue("0:00:05")) ' задержка выполнения
  60.  
  61. '' Clean up files
  62. If Dir(strDirectoryList & ".bat") <> "" Then Kill (strDirectoryList & ".bat")
  63. If Dir(strDirectoryList & ".out") <> "" Then Kill (strDirectoryList & ".out")
  64. If Dir(strDirectoryList & ".txt") <> "" Then Kill (strDirectoryList & ".txt")
  65.  
  66. End If
  67.  
  68.  
  69. bye:
  70.  
  71. Exit Sub
  72.  
  73. Err_Handler:
  74.  
  75.  
  76. MsgBox "Error : " & Err.Number & vbCrLf & "Description : " & Err.Description, vbCritical
  77.  
  78.  
  79. Windows("1ps.xlsm").Activate
  80.  
  81. Resume bye
  82.  
  83. End Sub

Комментарии