我是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”值添加什么?
对不起,我很困惑:(任何帮助都会很棒,并提前感谢你!
答案 0 :(得分:0)
我认为你应该看看这里 - Excel VBA reference for Inet objects 这里显示了如何在vba中添加INet对象的引用。此外,当您只想测试代码是否有效时,如果您使用"函数"而不是将宏指定给按钮等等。然后,当你去工作表单元格并开始输入= fnDown ...你应该看到你的宏 - 那里你可以把你的函数参数。但首先,您必须注意对Inet的引用。