从Excel连接到FTP以自动执行文件共享(VBA初学者)

时间:2017-06-27 13:40:23

标签: excel vba excel-vba ftp

我是Excel VBA的初学者和新手,但我正在尝试通过连接到Excel并可能创建一个有用的宏来自动化FTP(WinSCP)中的某些文件共享。在FTP中我去了Session>生成会话URL /代码>脚本(脚本文件)和以下代码在那里:

open ftp://myUsername:myPassword@theHostname/

# Your command 1
# Your command 2

exit

我假设开放线将Excel连接到FTP。我正在引用此站点的代码进入“#command”区域:https://www.mrexcel.com/forum/excel-questions/261043-connecting-ftp-excel.html

open ftp://myUsername:myPassword@theHostname/

Option Explicit

Sub FtpTest()
    MsgBox fnDownloadFile("ftp://yoursite", "username", "password", _
        "The name of your file", _
        "C:\The name of your file to save as")
End Sub

Function fnDownloadFile(ByVal strHostName As String, _
    ByVal strUserName As String, _
    ByVal strPassWord As String, _
    ByVal strRemoteFileName As String, _
    ByVal strLocalFileName As String) As String

    '// Set a reference to: Microsoft Internet Transfer Control
    '// This is the Msinet.ocx

    Dim FTP As Inet    'As InetCtlsObjects.Inet

    Set FTP = New Inet 'InetCtlsObjects.Inet

    On Error GoTo Errh
    With FTP
        .URL = strHostName
        .Protocol = 2
        .UserName = strUserName
        .Password = strPassWord
        .Execute , "Get " + strRemoteFileName + " " + strLocalFileName
        Do While .StillExecuting
            DoEvents
        Loop
        fnDownloadFile = .ResponseInfo
    End With
Xit:
    Set FTP = Nothing
    Exit Function

Errh:
    fnDownloadFile = "Error:-" & Err.Description
    Resume Xit
End Function

exit

我做了,因为这个网站说要去VBA编辑器>工具>参考并检查Microsoft Internet Control。

1)我使用的代码是对的吗?我把它放在正确的区域('#command'区域)?现在我将整个代码放在一个命令按钮中,但是当我单击它时它只是给我一个语法错误突出显示第一行:     Private Sub CommandButton1_Click())

2)我是否将Msgbox保留在第3行,等待用户输入或是否填写我的用户名/密码/主机名? (我对VBA中的功能还不是很好)如果我在代码中填写它,那么由于我没有访问网站,我会为“yoursite”值添加什么?

对不起,我很困惑:(任何帮助都会很棒,并提前感谢你!

1 个答案:

答案 0 :(得分:0)

我认为你应该看看这里 - Excel VBA reference for Inet objects 这里显示了如何在vba中添加INet对象的引用。此外,当您只想测试代码是否有效时,如果您使用"函数"而不是将宏指定给按钮等等。然后,当你去工作表单元格并开始输入= fnDown ...你应该看到你的宏 - 那里你可以把你的函数参数。但首先,您必须注意对Inet的引用。

此链接也可能有所帮助:VBA Excel and FTP with MSINET.OCX and Inet type