我正在尝试使用 VBA Excel 进行 FTP 下载操作(在 Excel 2013 x64、Windows 7 SP1 x64 上)。我找到了一些映射到 WinInet API 的代码,我可以成功upload文件使用PutFile
功能,但我希望得到一个GetFile
功能也能正常工作。
为了开始工作到目前为止,我使用了以下内容:第二个答案在这里 https://stackoverflow.com/questions/3026308/how-can-i-upload-data-using-ftp-http-or-a-socket-from-a-spreadsheet-with-vba-f, 和这个。我主要使用 SO 的第二个答案来让 PutFile 正常工作。我必须对原始代码进行一些更改,使其兼容 32 位和 64 位系统。
你可以看到我的进步here https://dpaste.de/4Axe.
我想做的是创建一个易于使用的 Sub 来调用此声明:
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
IE。像这样的子:
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 不太熟悉,并且很难解析所需的参数以及为这些参数传递的适当变量是什么。