Stream.SaveToFile上的VBA错误

我试图从另一篇文章(26486871)修改VBA脚本。

该脚本将下载一个Zip文件,提取一个文本文件并将数据导入Excel。

我不知道VBA,所以我会一次一个地解决每个function。

  1. 创build一个随机名称的临时目录……………………..完成
  2. 从公共服务器下载一个Zip文件…………………………..错误
  3. 提取文本文件(20MB,制表符分隔)………………………..尚未
  4. 将数据导入打开的工作表(覆盖现有数据)…尚未

我收到一个运行时错误Stream.SaveToFile:“参数是错误的types,超出了可接受的范围或冲突。

我试过选项1,2和adSaveCreateNotExists。 但是,Zip文件不会保存到临时文件夹。

我感谢任何帮助。

'Main Procedure Sub DownloadExtractAndImport() Dim url As String Dim targetFolder As String, targetFileZip As String, targetFileTXT As String Dim wkbAll As Workbook Dim wkbTemp As Workbook Dim sDelimiter As String Dim newSheet As Worksheet url = "http://www.example.com/data.zip" targetFolder = Environ("TEMP") & "\" & RandomString(6) & "\" MkDir targetFolder targetFileZip = targetFolder & "data.zip" targetFileTXT = targetFolder & "data.txt" '1 download file DownloadFile url, targetFileZip End Sub Private Sub DownloadFile(myURL As String, target As String) Dim WinHttpReq As Object Set WinHttpReq = CreateObject("Msxml2.ServerXMLHTTP") WinHttpReq.Open "GET", myURL, False WinHttpReq.send myURL = WinHttpReq.responseBody If WinHttpReq.Status = 200 Then Set oStream = CreateObject("ADODB.Stream") oStream.Open oStream.Type = 1 oStream.Write WinHttpReq.responseBody oStream.SaveToFile targetFile, 1 ' 1 = no overwrite, 2 = overwrite oStream.Close End If End Sub Private Function RandomString(cb As Integer) As String Randomize Dim rgch As String rgch = "abcdefghijklmnopqrstuvwxyz" rgch = rgch & UCase(rgch) & "0123456789" Dim i As Long For i = 1 To cb RandomString = RandomString & Mid$(rgch, Int(Rnd() * Len(rgch) + 1), 1) Next End Function 

这只是一个错字:它必须是target,而不是targetFile,因为targetFile没有被指定。 请使用Option Explicit来防止这样的错误。