我使用this link作爲從url下載zip文件的參考。使用VBA從url下載zip文件
我使用的代碼是在下面
Sub DownloadZipExtractCsvAndLoad()
Dim UrlFile As String, ZipFile As String, CsvFile As String, Folder As String, s As String
' UrlFile to the ZIP archive
UrlFile = "https://loanperformancedata.fanniemae.com/lppub/publish?file=2008Q1.zip"
' Extract ZipFile from UrlFile
ZipFile = "2008Q1.zip"
' Define temporary folder
Folder = "C:\Users\xxxxxx\Desktop\"
' Disable screen updating to avoid blinking
Application.ScreenUpdating = False
' Trap errors
On Error GoTo exit_
' Download UrlFile to ZipFile in Folder
If Not Url2File(UrlFile, Folder & ZipFile, "xxx", "xxxx") Then
MsgBox "Can't download file" & vbLf & UrlFile, vbCritical, "Error"
Exit Sub
End If
exit_:
' Restore screen updating
Application.ScreenUpdating = True
' Inform about the reason of the trapped error
If Err Then MsgBox Err.Description, vbCritical, "Error"
End Sub
Function Url2File(UrlFile As String, PathName As String, Optional Login As String, Optional Password As String) As Boolean
'ZVI:2017-01-07 Download UrlFile and save it to PathName.
' Use optional Login and Password if required.
' Returns True on success downloading.
Dim b() As Byte, FN As Integer
On Error GoTo exit_
If Len(Dir(PathName)) Then Kill PathName
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", UrlFile, False, Login, Password
.send
If .Status <> 200 Then Exit Function
b() = .responseBody
FN = FreeFile
Open PathName For Binary Access Write As #FN
Put #FN, , b()
exit_:
If FN Then Close #FN
Url2File = .Status = 200
End With
End Function
不過,我每次運行該代碼時,它只會創建一個空的壓縮文件,而不是下載的文件。
任何幫助?
如果您轉到您嘗試檢索的實際URL(即,粘貼** https://loanperformancedata.fanniemae.com/lppub/publish?file = 2008Q1.zip **到您的瀏覽器搜索欄中),您將看到該文件不存在。 – ainwood
@ainwood我是這方面的新手。該網站需要登錄信息。用我的用戶名和密碼登錄後,鏈接就可以工作。 – kzhang12