Загрузка SFTP в VBA - PullRequest
       7

Загрузка SFTP в VBA

0 голосов
/ 01 сентября 2018

Dode ниже не возвращает ошибку, или «success», или «fail», но также не работает - информация в подпрограмме TestUpload, которая CAPITALIZED, является единственной информацией, которую я изменил, чтобы сделать это сообщение - все остальное законно - заранее спасибо.

Option Compare Database

Private Const FTP_TRANSFER_TYPE_UNKNOWN     As Long = 0
Private Const INTERNET_FLAG_RELOAD          As Long = &H80000000

Private Declare Function InternetOpenA Lib "wininet.dll" ( _
    ByVal sAgent As String, _
    ByVal lAccessType As Long, _
    ByVal sProxyName As String, _
    ByVal sProxyBypass As String, _
    ByVal lFlags As Long) As Long

Private Declare Function InternetConnectA Lib "wininet.dll" ( _
    ByVal hInternetSession As Long, _
    ByVal sServerName As String, _
    ByVal nServerPort As Long, _
    ByVal sUsername As String, _
    ByVal sPassword As String, _
    ByVal lService As Long, _
    ByVal lFlags As Long, _
    ByVal lcontext As Long) As Long

Private Declare Function FtpPutFileA _
   Lib "wininet.dll" _
 _
       (ByVal hFtpSession As Long, _
        ByVal lpszLocalFile As String, _
        ByVal lpszRemoteFile As String, _
        ByVal dwFlags As Long, _
        ByVal dwContext As Long) As Boolean

Private Declare Function InternetCloseHandle Lib "wininet" ( _
    ByVal hInet As Long) As Long

Sub FtpUpload(ByVal strLocalFile As String, ByVal strRemoteFile As String, ByVal strHost As String, ByVal lngPort As Long, ByVal strUser As String, ByVal strPass As String)
    Dim hOpen   As Long
    Dim hConn   As Long

    hOpen = InternetOpenA("FTPGET", 1, vbNullString, vbNullString, 1)
    hConn = InternetConnectA(hOpen, strHost, lngPort, strUser, strPass, 1, 0, 2)

    If FtpPutFileA(hConn, strLocalFile, strRemoteFile, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0) Then
        Debug.Print "Success"
    Else
        Debug.Print "Fail"
    End If

    'Close connections
    InternetCloseHandle hConn
    InternetCloseHandle hOpen

End Sub


Sub TestUpload()
  FtpUpload "C:\Users\FOLDER\UPLOAD FILE.csv", "/<root>/SFTPSITE FOLDER NAME/admin", _
            "IP.ADDRESS.OF.SFTPSITE", "22", "SIGNIN@sftp.DOMAIN.com", "PASSWORD"
End Sub

1 Ответ

0 голосов
/ 04 сентября 2018

Функции WinINet не поддерживают протокол SFTP (протокол FTP совершенно другой).

Нет встроенной поддержки SFTP ни в VBA, ни в Windows API. Вы должны использовать стороннюю библиотеку или программное обеспечение.

См. Эти вопросы для некоторых примеров:

(я автор WinSCP)

...