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

经过一番search,我还没有能够制作一个macros,从一个特定的网站下载.zip文件。 我的意思是我已经能够find类似的问题,但没有能够应用必要的改变,以便我的问题得到解决。 包含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文件的url是“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'开始你的url,因为你需要完全合格的域名加资源(又名http://等)

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