我正尝试通过Excel VBA从IBM Cognos下载文件。该脚本将执行,但我只有一个9KB的Excel文件不会打开。我如何完成这项工作?
这里是我的代码:通过VBA下载Excel文件
Sub ado_stream()
'add a reference to Microsoft XML v6 and MS ActiveX Data Objects
'via Tools/References
'This assumes the workbook is saved already, and that you want the file in the same folder
Dim fileStream As ADODB.Stream
Dim xmlHTTP As MSXML2.xmlHTTP
Dim strURL As String
strURL = "http://foo.bar"
Set xmlHTTP = New MSXML2.xmlHTTP
xmlHTTP.Open "GET", strURL, False, "username", "password"
xmlHTTP.Send
If xmlHTTP.status <> 200 Then
MsgBox "File not found"
GoTo exitsub
End If
Set fileStream = New ADODB.Stream
With fileStream
.Open
.Type = adTypeBinary
.Write xmlHTTP.responseBody
.Position = 0
.SaveToFile "C:\Users\myname\Downloads\Test.xlsx"
.Close
End With
exitsub:
Set fileStream = Nothing
Set xmlHTTP = Nothing
End Sub
尝试'xmlHTTP.responseText' – cyboashu
之前打开流,你应该使用循环来检查'xmlHTTP.ReadyState = 4' - 以'DoEvents' - 甚至短'Sleep'通话之后确保文档已完全加载 – dbmitch
@cyboashu,将.responseBody更改为.responseText yeilds“参数的类型错误...”错误消息。 – Mateyobi