2
我想要获得FTP下载操作以使用VBA Excel(在Excel 2013 x64,Windows 7 SP1 x64上)。我发现了一些映射到WinInet API的代码,我可以使用PutFile
函数成功地上传文件,但我希望GetFile
函数也能正常工作。VBA Excel:通过WinINet的FTP GetFile
为了让我工作到目前为止,我使用了以下内容:second answer here和link。我一直在使用SO的第二个答案来让PutFile工作。我必须对原始代码进行一些更改以使其与32位和64位系统兼容。
你可以看到我的进展here。
我所希望做的是使一个易于使用的子调用此声明:
Private Declare Function FtpGetFile Lib "WinInet" Alias "FtpGetFileA" (ByVal hFtp As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
I.E.像这样的子:
Public Sub GetFile(RemoteFilename As String, LocalFilename As String)
If FtpGetFile(' what arguments do I put here ') = 0 Then
Err.Raise vbObjectError + 1, , LastError
End If
End Sub
我很努力,因为我不是很熟悉的WinInet API时遇到困难解析所需的参数,什么是适当的变量来传递这些参数。
谢谢你的回答。尝试时,我得到“运行时错误”-2147221503(80040001)'“ – tsurantino 2014-12-13 05:00:17
@tsurantino:在哪一行?使用调试器逐步完成调用(单击“调试”,然后使用F8键单步执行)。你能连接成功吗?你确定FTP的主文件夹中存在确切的文件名吗?最后,你确定你有正确的用户权限保存在指定的本地文件夹中吗?如果您不确定('C:\ Users \ tsurantino \ Desktop \ NewFile'),请尝试使用桌面的完整路径。 – grovesNL 2014-12-13 05:04:05
哇,所以错误没有指定一个完整的下载路径似乎。非常感谢您花时间帮助我进行调试。我试着提供C:\ filename.txt,但似乎C:\驱动器受到保护。 – tsurantino 2014-12-13 05:10:13