2016-02-25 63 views
3

經過一番搜索之後,我還沒有能夠製作一個可以下載.zip文件從一個特定的網站。我的意思是我已經能夠找到類似的問題,但無法應用必要的更改以便解決我的問題。包含zip文件的網站是:https://nio.gov.si/nio/data/prvic+registrirana+vozila+v+letu+2014+po+mesecih,表頭「Priponke」是文件。例如:2014年12月(959 kb),2014年11月(1061 kb),...下載2014年12月zip文件的網址是「cms/download/document/a7605005b6879fe5f7dbab6d60d4ae787dbced6b-1422453741279」。我提前感謝你,正在等待你的回覆。使用excel vba從網站下載zip文件(如果還能從zip文件中提取csv並在excel中打開它,那麼甚至更好)

我當前的代碼是:

Public Sub DownloadFile() 
    Dim objWHTTP As Object 
    Dim strPath As String 
    Dim arrData() As Byte 
    Dim lngFreeFile As Long 

On Error Resume Next 
    Set objWHTTP = CreateObject("WinHTTP.WinHTTPrequest.5") 
    If Err.Number <> 0 Then 
     Set objWHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1") 
    End If 
On Error GoTo 0 

    strPath = "https://nio.gov.si/nio/data/prvic+registrirana+vozila+v+letu+2014+po+mesecih" 
    strPath = "https://nio.gov.si/nio/cms/download/document/a7605005b6879fe5f7dbab6d60d4ae787dbced6b-1422453741279" 

    objWHTTP.Open "GET", strPath, False 
    objWHTTP.send 
    arrData = objWHTTP.responseBody 

    If Len(Dir("C:\FootieFile", vbDirectory)) = 0 Then 
     MkDir "C:\FootieFile" 
    End If 

    lngFreeFile = FreeFile 
    Open "C:\FootieFile\MyFile.xml" For Binary Access Write As #lngFreeFile 
     Put #lngFreeFile, 1, arrData 
    Close #lngFreeFile 

    Set objWHTTP = Nothing 
    Erase arrData 
End Sub 

親切的問候

+0

http://stackoverflow.com/questions/17877389/how-do-i-download-a-file-using-vba-without-internet-explorer嘗試看看這裏 –

+0

不起作用。 「未指定的錯誤。」而且一旦我將myURL更改爲「cms/download/document/a7605005b6879fe5f7dbab6d60d4ae787dbced6b-1422453741279」,就會出現一個Method is open的對象IServerXMLHTTPRequest2失敗。 – user3729625

回答

0

你需要下載一個二進制文件,並保存它。這可以使用MSXML2.XMLHTTP60對象進行下載,並使用ADODB.Stream對象進行保存。

參見例如http://www.motobit.com/tips/detpg_read-write-binary-files/

我已經成功地使用它從服務器上下載JPG文件並將它們顯示在MS Access前端。

此外,我希望你知道你不能用「CMS」開始您的網址,因爲你需要完全限定域名加資源(又稱HTTP://等)

另外要小心使用Unicode數據。爲此,您可能需要使用StrConv()。下載後請檢查文件大小是否與服務器上的大小相同。