无法使用Excel VBA打开从Sharepoint 2013下载的Excel文件

无法使用Excel VBA打开从Sharepoint 2013下载的Excel文件,excel,vba,sharepoint,xmlhttprequest,adodb,Excel,Vba,Sharepoint,Xmlhttprequest,Adodb,我尝试使用以下代码从Sharepoint 2013下载单个Excel文件 选项显式 Sub TxtStream() Dim myURL As String, DestFile As String, myHeader As String Dim Usr as string, Pwd as string Dim oStream As Object Usr="": Pwd="" myURL = "https://Server.Name/teams/Forms/AllItems.aspx/Mast

我尝试使用以下代码从Sharepoint 2013下载单个Excel文件

选项显式

Sub TxtStream()

Dim myURL As String, DestFile As String, myHeader As String
Dim Usr as string, Pwd as string
Dim oStream As Object

Usr="": Pwd=""

myURL = "https://Server.Name/teams/Forms/AllItems.aspx/MasterFile.xlsx"
DestFile = "C:\Test.xlsx"

Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("MSXML2.XMLHTTP")

'WinHttpReq.Open "HEAD", myURL, False, Usr, Pwd
'WinHttpReq.Send
'myHeader = WinHttpReq.getAllResponseHeaders()
'Debug.Print myHeader
'myHeader = WinHttpReq.getResponseHeader("Content-Disposition")
'Debug.Print myHeader
'myHeader = WinHttpReq.getResponseHeader("Content-Type")
'Debug.Print myHeader

WinHttpReq.Open "GET", myURL, False, Usr, Pwd
WinHttpReq.setRequestHeader "content-type", "application/octet-stream"
WinHttpReq.Send

myURL = WinHttpReq.responsebody

If WinHttpReq.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Type = 1
    oStream.Open
    oStream.Position = 0
    oStream.Write WinHttpReq.responsebody
    oStream.SaveToFile DestFile, 2
    oStream.Close
End If

End Sub
它可以下载,但当我尝试在Excel 2010中打开它时,它会出现一个错误:

Excel无法打开文件Test.xlsx,因为文件格式或文件扩展名无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配

我已经检查了内容类型,它显示为Text/Html;UTF-8。它不显示内容配置


有人能帮我解释一下为什么文件没有打开吗?

这不是一个完整的答案,但更像是一个评论/建议,因为我没有足够的声誉发表评论

在GET查询中设置内容类型标题似乎没有任何区别。我们需要检查服务器发送的
WinHttpReq.getResponseHeader(“内容类型”)
,在本例中,它似乎是Text/Html;UTF-8

如果将myURL变量中使用的URL复制粘贴到浏览器中,是否会出现“文件另存为”对话框

如果您使用where可以在composer中创建请求,并检查响应以优化您的需求,并查看下载文件是否还需要任何其他头(如cookie、身份验证等),则可以更好地分析您的请求和响应。在这种情况下,您可能会因为某些身份验证问题而返回登录页(html),而不是excel文件

打开用Notepad.exe保存的DestFile,查看它实际上是XLSX文件(以字符PK开头)还是HTML或其他文本文件