Session.Open在Winscp - VBA中出错

时间:2017-12-26 11:57:20

标签: vba winscp winscp-net

您好我正在尝试通过VBA在WinSCP中上传文件。 mySession.Open mySessionOptions获得Error - Network error connection to "103.231.8.66" time out。我用谷歌搜索,但没有想到。任何建议都会赞赏

 Sub test()
    Dim wbs As String
     wbs = "D:\Ashok\Work\Loan_Input_Template V8-Library.xlsx"
    Dim mySession As New Session

        ' Enable custom error handling
        On Error Resume Next

       Call Upload(mySession, wbs)

        ' Query for errors
        If Err.Number <> 0 Then
            MsgBox "Error: " & Err.Description

            ' Clear the error
            Err.Clear
        End If

        ' Disconnect, clean up
        mySession.Dispose

        ' Restore default error handling
        On Error GoTo 0

              '  wb.Close SaveChanges:=True

    'FileSystemObject.DeleteFile sPathName

    End Sub

     Private Sub Upload(ByRef mySession As Session, ByRef wb1 As String)  'error line
     Dim wb As Workbook
    Set wb = Workbooks.Open(wb1)
        ' Setup session options
        Dim mySessionOptions As New SessionOptions
        With mySessionOptions
            .Protocol = Protocol_SFTP
            .HostName = "103.231.8.66"
            .UserName = "username"
            .Password = "password"
            .SshHostKeyFingerprint = "ssh-ed25519 256 df:94:44:56:1b:c2:75:8b:b4:58:3a:e2:ef:2e:0d:78"
        End With

        ' Connect

        mySession.Open mySessionOptions ' ERROR LINE

        ' Upload files
        Dim myTransferOptions As New TransferOptions
        myTransferOptions.TransferMode = TransferMode_Binary
        Dim transferResult As TransferOperationResult

'i am not sure this line will working or not

        Set transferResult = mySession.PutFiles(wb, "/home/sftpcf/", False, myTransferOptions)

        ' Throw on any error
        transferResult.Check

        ' Display results
        Dim transfer As TransferEventArgs
        For Each transfer In transferResult.Transfers
            MsgBox "Upload of " & transfer.FileName & " succeeded"
        Next

    End Sub

错误消息:

enter image description here

手动记录:

enter image description here

2 个答案:

答案 0 :(得分:0)

终于找到了回答我的问题:在.PortNumber = XXXX中添加端口号mySessionOptions,我删除了Set wb = Workbooks.Open(wb1)。它的作品非常完美

答案 1 :(得分:0)

<块引用>

WinSCP VBA

WinSCP 端口号默认为正在使用的协议,即 SFTP 端口 22、FTP 端口 21。

协议的会话选项默认是使用端口 22 的 SFTP。

如果您使用的是 SFTP,则 sessionOptions 不需要端口号或协议。

<块引用>

以下是默认 SFTP 的示例

    Dim mySessionOptions As New SessionOptions
    With mySessionOptions
        .HostName = "103.231.8.66"
        .UserName = "username"
        .Password = "password"
        .SshHostKeyFingerprint = "ssh-ed25519 256 df......"
    End With