繁体   English   中英

使用excel vba从网站下载zip文件(如果还能从zip文件中提取csv并在excel中打开它,那就更好了)

[英]Downloading zip file from website using excel vba (if also able to extract the csv from zip file and open it in excel, then even better)

经过一番搜索,我无法制作一个可以从特定网站下载.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”。 我提前感谢你,等待你的回复。

我目前的代码是:

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

亲切的问候

您需要下载二进制文件并保存。 这可以使用MSXML2.XMLHTTP60对象进行下载,并使用ADODB.Stream对象进行保存。

参见例如http://www.motobit.com/tips/detpg_read-write-binary-files/

我成功地使用它从服务器下载JPG文件并在MS Access前端显示它们。

此外,我希望你意识到你不能用'cms'开始你的网址,因为你需要完全合格的域名加资源(又名http:// etc)

还要小心unicode数据。 为此,您可能需要使用StrConv()。 下载后检查文件的大小是否与服务器上的大小相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM